public class DateTimeZoneBuilder extends Object
DateTimeZoneBuilder itself is mutable and not thread-safe, but the DateTimeZone objects that it builds are thread-safe and immutable.
It is intended that ZoneInfoCompiler
be used to read time zone data
files, indirectly calling DateTimeZoneBuilder. The following complex
example defines the America/Los_Angeles time zone, with all historical
transitions:
DateTimeZone America_Los_Angeles = new DateTimeZoneBuilder() .addCutover(-2147483648, 'w', 1, 1, 0, false, 0) .setStandardOffset(-28378000) .setFixedSavings("LMT", 0) .addCutover(1883, 'w', 11, 18, 0, false, 43200000) .setStandardOffset(-28800000) .addRecurringSavings("PDT", 3600000, 1918, 1919, 'w', 3, -1, 7, false, 7200000) .addRecurringSavings("PST", 0, 1918, 1919, 'w', 10, -1, 7, false, 7200000) .addRecurringSavings("PWT", 3600000, 1942, 1942, 'w', 2, 9, 0, false, 7200000) .addRecurringSavings("PPT", 3600000, 1945, 1945, 'u', 8, 14, 0, false, 82800000) .addRecurringSavings("PST", 0, 1945, 1945, 'w', 9, 30, 0, false, 7200000) .addRecurringSavings("PDT", 3600000, 1948, 1948, 'w', 3, 14, 0, false, 7200000) .addRecurringSavings("PST", 0, 1949, 1949, 'w', 1, 1, 0, false, 7200000) .addRecurringSavings("PDT", 3600000, 1950, 1966, 'w', 4, -1, 7, false, 7200000) .addRecurringSavings("PST", 0, 1950, 1961, 'w', 9, -1, 7, false, 7200000) .addRecurringSavings("PST", 0, 1962, 1966, 'w', 10, -1, 7, false, 7200000) .addRecurringSavings("PST", 0, 1967, 2147483647, 'w', 10, -1, 7, false, 7200000) .addRecurringSavings("PDT", 3600000, 1967, 1973, 'w', 4, -1, 7, false, 7200000) .addRecurringSavings("PDT", 3600000, 1974, 1974, 'w', 1, 6, 0, false, 7200000) .addRecurringSavings("PDT", 3600000, 1975, 1975, 'w', 2, 23, 0, false, 7200000) .addRecurringSavings("PDT", 3600000, 1976, 1986, 'w', 4, -1, 7, false, 7200000) .addRecurringSavings("PDT", 3600000, 1987, 2147483647, 'w', 4, 1, 7, true, 7200000) .toDateTimeZone("America/Los_Angeles", true);
ZoneInfoCompiler
,
ZoneInfoProvider
Constructor and Description |
---|
DateTimeZoneBuilder() |
Modifier and Type | Method and Description |
---|---|
DateTimeZoneBuilder |
addCutover(int year,
char mode,
int monthOfYear,
int dayOfMonth,
int dayOfWeek,
boolean advanceDayOfWeek,
int millisOfDay)
Adds a cutover for added rules.
|
DateTimeZoneBuilder |
addRecurringSavings(String nameKey,
int saveMillis,
int fromYear,
int toYear,
char mode,
int monthOfYear,
int dayOfMonth,
int dayOfWeek,
boolean advanceDayOfWeek,
int millisOfDay)
Add a recurring daylight saving time rule.
|
static DateTimeZone |
readFrom(DataInput in,
String id)
Decodes a built DateTimeZone from the given stream, as encoded by
writeTo.
|
static DateTimeZone |
readFrom(InputStream in,
String id)
Decodes a built DateTimeZone from the given stream, as encoded by
writeTo.
|
DateTimeZoneBuilder |
setFixedSavings(String nameKey,
int saveMillis)
Set a fixed savings rule at the cutover.
|
DateTimeZoneBuilder |
setStandardOffset(int standardOffset)
Sets the standard offset to use for newly added rules until the next
cutover is added.
|
DateTimeZone |
toDateTimeZone(String id,
boolean outputID)
Processes all the rules and builds a DateTimeZone.
|
void |
writeTo(String zoneID,
DataOutput out)
Encodes a built DateTimeZone to the given stream.
|
void |
writeTo(String zoneID,
OutputStream out)
Encodes a built DateTimeZone to the given stream.
|
public static DateTimeZone readFrom(InputStream in, String id) throws IOException
in
- input stream to read encoded DateTimeZone from.id
- time zone id to assignIOException
public static DateTimeZone readFrom(DataInput in, String id) throws IOException
in
- input stream to read encoded DateTimeZone from.id
- time zone id to assignIOException
public DateTimeZoneBuilder addCutover(int year, char mode, int monthOfYear, int dayOfMonth, int dayOfWeek, boolean advanceDayOfWeek, int millisOfDay)
year
- the year of cutovermode
- 'u' - cutover is measured against UTC, 'w' - against wall
offset, 's' - against standard offsetmonthOfYear
- the month from 1 (January) to 12 (December)dayOfMonth
- if negative, set to ((last day of month) - ~dayOfMonth).
For example, if -1, set to last day of monthdayOfWeek
- from 1 (Monday) to 7 (Sunday), if 0 then ignoreadvanceDayOfWeek
- if dayOfMonth does not fall on dayOfWeek, advance to
dayOfWeek when true, retreat when false.millisOfDay
- additional precision for specifying time of day of cutoverpublic DateTimeZoneBuilder setStandardOffset(int standardOffset)
standardOffset
- the standard offset in millispublic DateTimeZoneBuilder setFixedSavings(String nameKey, int saveMillis)
public DateTimeZoneBuilder addRecurringSavings(String nameKey, int saveMillis, int fromYear, int toYear, char mode, int monthOfYear, int dayOfMonth, int dayOfWeek, boolean advanceDayOfWeek, int millisOfDay)
nameKey
- the name key of new rulesaveMillis
- the milliseconds to add to standard offsetfromYear
- the first year that rule is in effect, MIN_VALUE indicates
beginning of timetoYear
- the last year (inclusive) that rule is in effect, MAX_VALUE
indicates end of timemode
- 'u' - transitions are calculated against UTC, 'w' -
transitions are calculated against wall offset, 's' - transitions are
calculated against standard offsetmonthOfYear
- the month from 1 (January) to 12 (December)dayOfMonth
- if negative, set to ((last day of month) - ~dayOfMonth).
For example, if -1, set to last day of monthdayOfWeek
- from 1 (Monday) to 7 (Sunday), if 0 then ignoreadvanceDayOfWeek
- if dayOfMonth does not fall on dayOfWeek, advance to
dayOfWeek when true, retreat when false.millisOfDay
- additional precision for specifying time of day of transitionspublic DateTimeZone toDateTimeZone(String id, boolean outputID)
id
- time zone id to assignoutputID
- true if the zone id should be outputpublic void writeTo(String zoneID, OutputStream out) throws IOException
out
- the output stream to receive the encoded DateTimeZoneIOException
public void writeTo(String zoneID, DataOutput out) throws IOException
out
- the output stream to receive the encoded DateTimeZoneIOException
Copyright © 2002–2024 Joda.org. All rights reserved.