12d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert// © 2016 and later: Unicode, Inc. and others. 22d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert// License & terms of use: http://www.unicode.org/copyright.html#License 37935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert/* 47935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert****************************************************************************** 57935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert* Copyright (C) 2007, International Business Machines Corporation and * 67935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert* others. All Rights Reserved. * 77935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert****************************************************************************** 87935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert*/ 97935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 107935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubertpackage com.ibm.icu.impl.duration; 117935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 127935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubertimport java.util.TimeZone; 137935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 147935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert/** 157935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Constructs a Period given a base time and a duration in milliseconds. 167935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * <p> 177935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * PeriodBuilder may be used alone or be set on a DurationFormatter 187935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * to customize how that formatter constructs a Period for formatting. 197935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * <p> 207935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * None of the operations on PeriodBuilder change the current builder. 217935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert */ 227935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubertpublic interface PeriodBuilder { 237935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 247935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Create a period of the given duration using the current system 257935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * time as the reference time. 267935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * 277935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * @param duration the duration in milliseconds from the current time 287935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * to the target time. A negative duration indicates a time in the past 297935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * @return a Period that represents the duration 307935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert */ 317935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert Period create(long duration); 327935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 337935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 347935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Create a period of the given duration using the provided reference date. 357935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * 367935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * @param duration the duration in milliseconds from the referenct time 377935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * to the target time. A negative duration indicates a time before the 387935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * reference time 397935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * @param referenceDate the reference date from which to compute the period 407935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * @return a Period that represents the duration 417935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert */ 427935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert Period createWithReferenceDate(long duration, long referenceDate); 437935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 447935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 457935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Returns a new PeriodBuilder that uses the provided locale to 467935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * determine what periods are available for use. 477935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert */ 487935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert PeriodBuilder withLocale(String localeName); 497935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 507935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 517935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Returns a new PeriodBuilder that computes periods starting at 527935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * dates in the provided time zone. 537935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert */ 547935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert PeriodBuilder withTimeZone(TimeZone tz); 557935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert} 56