Class GJChronology
- All Implemented Interfaces:
Serializable
ISOChronology instead.
The Gregorian calendar replaced the Julian calendar, and the point in time when this chronology switches can be controlled using the second parameter of the getInstance method. By default this cutover is set to the date the Gregorian calendar was first instituted, October 15, 1582.
Before this date, this chronology uses the proleptic Julian calendar (proleptic means extending indefinitely). The Julian calendar has leap years every four years, whereas the Gregorian has special rules for 100 and 400 years. A meaningful result will thus be obtained for all input values. However before 8 CE, Julian leap years were irregular, and before 45 BCE there was no Julian calendar.
This chronology differs from
GregorianCalendar in that years
in BCE are returned correctly. Thus year 1 BCE is returned as -1 instead of 1.
The yearOfEra field produces results compatible with GregorianCalendar.
The Julian calendar does not have a year zero, and so year -1 is followed by year 1. If the Gregorian cutover date is specified at or before year -1 (Julian), year zero is defined. In other words, the proleptic Gregorian chronology used by this class has a year zero.
To create a pure proleptic Julian chronology, use JulianChronology,
and to create a pure proleptic Gregorian chronology, use
GregorianChronology.
GJChronology is thread-safe and immutable.
- Since:
- 1.0
- See Also:
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionprivate classThis basic cutover field adjusts calls to 'get' and 'set' methods, and assumes that calls to add and addWrapField are unaffected by the cutover.private final classCutover field for variable length fields.private static classLinks the duration back to a ImpreciseCutoverField.Nested classes/interfaces inherited from class org.joda.time.chrono.AssembledChronology
AssembledChronology.Fields -
Field Summary
FieldsModifier and TypeFieldDescriptionprivate static final ConcurrentHashMap<GJCacheKey, GJChronology> Cache of zone to chronology list(package private) static final InstantThe default GregorianJulian cutover point.private Instantprivate longprivate longprivate GregorianChronologyprivate JulianChronologyprivate static final longSerialization lock -
Constructor Summary
ConstructorsModifierConstructorDescriptionprivateGJChronology(JulianChronology julian, GregorianChronology gregorian, Instant cutoverInstant) privateGJChronology(Chronology base, JulianChronology julian, GregorianChronology gregorian, Instant cutoverInstant) Called when applying a time zone. -
Method Summary
Modifier and TypeMethodDescriptionprotected voidassemble(AssembledChronology.Fields fields) Invoked by the constructor and after deserialization to allow subclasses to define all of its supported fields.private static longconvertByWeekyear(long instant, Chronology from, Chronology to) Convert a datetime from one chronology to another.private static longconvertByYear(long instant, Chronology from, Chronology to) Convert a datetime from one chronology to another.booleanChecks if this chronology instance equals another.longgetDateTimeMillis(int year, int monthOfYear, int dayOfMonth, int millisOfDay) Returns a datetime millisecond instant, formed from the given year, month, day, and millisecond values.longgetDateTimeMillis(int year, int monthOfYear, int dayOfMonth, int hourOfDay, int minuteOfHour, int secondOfMinute, int millisOfSecond) Returns a datetime millisecond instant, formed from the given year, month, day, hour, minute, second, and millisecond values.Gets the cutover instant between Gregorian and Julian chronologies.static GJChronologyFactory method returns instances of the default GJ cutover chronology.static GJChronologygetInstance(DateTimeZone zone) Factory method returns instances of the GJ cutover chronology.static GJChronologygetInstance(DateTimeZone zone, long gregorianCutover, int minDaysInFirstWeek) Factory method returns instances of the GJ cutover chronology.static GJChronologygetInstance(DateTimeZone zone, ReadableInstant gregorianCutover) Factory method returns instances of the GJ cutover chronology.static GJChronologygetInstance(DateTimeZone zone, ReadableInstant gregorianCutover, int minDaysInFirstWeek) Factory method returns instances of the GJ cutover chronology.static GJChronologyFactory method returns instances of the default GJ cutover chronology.intGets the minimum days needed for a week to be the first week in a year.getZone()Returns the DateTimeZone that this Chronology operates in, or null if unspecified.(package private) longgregorianToJulianByWeekyear(long instant) (package private) longgregorianToJulianByYear(long instant) inthashCode()A suitable hash code for the chronology.(package private) longjulianToGregorianByWeekyear(long instant) (package private) longjulianToGregorianByYear(long instant) private ObjectSerialization singletontoString()Gets a debugging toString.withUTC()Gets the Chronology in the UTC time zone.withZone(DateTimeZone zone) Gets the Chronology in a specific time zone.Methods inherited from class org.joda.time.chrono.AssembledChronology
centuries, centuryOfEra, clockhourOfDay, clockhourOfHalfday, dayOfMonth, dayOfWeek, dayOfYear, days, era, eras, getBase, getDateTimeMillis, getParam, halfdayOfDay, halfdays, hourOfDay, hourOfHalfday, hours, millis, millisOfDay, millisOfSecond, minuteOfDay, minuteOfHour, minutes, monthOfYear, months, secondOfDay, secondOfMinute, seconds, weekOfWeekyear, weeks, weekyear, weekyearOfCentury, weekyears, year, yearOfCentury, yearOfEra, years
-
Field Details
-
serialVersionUID
private static final long serialVersionUIDSerialization lock- See Also:
-
DEFAULT_CUTOVER
The default GregorianJulian cutover point. -
cCache
Cache of zone to chronology list -
iJulianChronology
-
iGregorianChronology
-
iCutoverInstant
-
iCutoverMillis
private long iCutoverMillis -
iGapDuration
private long iGapDuration
-
-
Constructor Details
-
GJChronology
private GJChronology(JulianChronology julian, GregorianChronology gregorian, Instant cutoverInstant) - Parameters:
julian- chronology used before the cutover instantgregorian- chronology used at and after the cutover instantcutoverInstant- instant when the gregorian chronology began
-
GJChronology
private GJChronology(Chronology base, JulianChronology julian, GregorianChronology gregorian, Instant cutoverInstant) Called when applying a time zone.
-
-
Method Details
-
convertByYear
Convert a datetime from one chronology to another. -
convertByWeekyear
Convert a datetime from one chronology to another. -
getInstanceUTC
Factory method returns instances of the default GJ cutover chronology. This uses a cutover date of October 15, 1582 (Gregorian) 00:00:00 UTC. For this value, October 4, 1582 (Julian) is followed by October 15, 1582 (Gregorian).The first day of the week is designated to be
Monday, and the minimum days in the first week of the year is 4.The time zone of the returned instance is UTC.
- Returns:
- the chronology, not null
-
getInstance
Factory method returns instances of the default GJ cutover chronology. This uses a cutover date of October 15, 1582 (Gregorian) 00:00:00 UTC. For this value, October 4, 1582 (Julian) is followed by October 15, 1582 (Gregorian).The first day of the week is designated to be
Monday, and the minimum days in the first week of the year is 4.The returned chronology is in the default time zone.
- Returns:
- the chronology, not null
-
getInstance
Factory method returns instances of the GJ cutover chronology. This uses a cutover date of October 15, 1582 (Gregorian) 00:00:00 UTC. For this value, October 4, 1582 (Julian) is followed by October 15, 1582 (Gregorian).The first day of the week is designated to be
Monday, and the minimum days in the first week of the year is 4.- Parameters:
zone- the time zone to use, null is default- Returns:
- the chronology, not null
-
getInstance
Factory method returns instances of the GJ cutover chronology. Any cutover date may be specified.The first day of the week is designated to be
Monday, and the minimum days in the first week of the year is 4.- Parameters:
zone- the time zone to use, null is defaultgregorianCutover- the cutover to use, null means default- Returns:
- the chronology, not null
-
getInstance
public static GJChronology getInstance(DateTimeZone zone, ReadableInstant gregorianCutover, int minDaysInFirstWeek) Factory method returns instances of the GJ cutover chronology. Any cutover date may be specified.- Parameters:
zone- the time zone to use, null is defaultgregorianCutover- the cutover to use, null means defaultminDaysInFirstWeek- minimum number of days in first week of the year; default is 4- Returns:
- the chronology, not null
-
getInstance
public static GJChronology getInstance(DateTimeZone zone, long gregorianCutover, int minDaysInFirstWeek) Factory method returns instances of the GJ cutover chronology. Any cutover date may be specified.- Parameters:
zone- the time zone to use, null is defaultgregorianCutover- the cutover to useminDaysInFirstWeek- minimum number of days in first week of the year; default is 4- Returns:
- the chronology, not null
-
readResolve
Serialization singleton -
getZone
Description copied from class:BaseChronologyReturns the DateTimeZone that this Chronology operates in, or null if unspecified.- Overrides:
getZonein classAssembledChronology- Returns:
- DateTimeZone null if unspecified
-
withUTC
Gets the Chronology in the UTC time zone.- Specified by:
withUTCin classBaseChronology- Returns:
- the chronology in UTC
-
withZone
Gets the Chronology in a specific time zone.- Specified by:
withZonein classBaseChronology- Parameters:
zone- the zone to get the chronology in, null is default- Returns:
- the chronology
- See Also:
-
getDateTimeMillis
public long getDateTimeMillis(int year, int monthOfYear, int dayOfMonth, int millisOfDay) throws IllegalArgumentException Description copied from class:BaseChronologyReturns a datetime millisecond instant, formed from the given year, month, day, and millisecond values. The set of given values must refer to a valid datetime, or else an IllegalArgumentException is thrown.The default implementation calls upon separate DateTimeFields to determine the result. Subclasses are encouraged to provide a more efficient implementation.
- Overrides:
getDateTimeMillisin classAssembledChronology- Parameters:
year- year to usemonthOfYear- month to usedayOfMonth- day of month to usemillisOfDay- millisecond to use- Returns:
- millisecond instant from 1970-01-01T00:00:00Z
- Throws:
IllegalArgumentException- if the values are invalid
-
getDateTimeMillis
public long getDateTimeMillis(int year, int monthOfYear, int dayOfMonth, int hourOfDay, int minuteOfHour, int secondOfMinute, int millisOfSecond) throws IllegalArgumentException Description copied from class:BaseChronologyReturns a datetime millisecond instant, formed from the given year, month, day, hour, minute, second, and millisecond values. The set of given values must refer to a valid datetime, or else an IllegalArgumentException is thrown.The default implementation calls upon separate DateTimeFields to determine the result. Subclasses are encouraged to provide a more efficient implementation.
- Overrides:
getDateTimeMillisin classAssembledChronology- Parameters:
year- year to usemonthOfYear- month to usedayOfMonth- day of month to usehourOfDay- hour to useminuteOfHour- minute to usesecondOfMinute- second to usemillisOfSecond- millisecond to use- Returns:
- millisecond instant from 1970-01-01T00:00:00Z
- Throws:
IllegalArgumentException- if the values are invalid
-
getGregorianCutover
Gets the cutover instant between Gregorian and Julian chronologies.- Returns:
- the cutover instant
-
getMinimumDaysInFirstWeek
public int getMinimumDaysInFirstWeek()Gets the minimum days needed for a week to be the first week in a year.- Returns:
- the minimum days
-
equals
Checks if this chronology instance equals another. -
hashCode
public int hashCode()A suitable hash code for the chronology. -
toString
Gets a debugging toString.- Specified by:
toStringin classBaseChronology- Returns:
- a debugging string
-
assemble
Description copied from class:AssembledChronologyInvoked by the constructor and after deserialization to allow subclasses to define all of its supported fields. All unset fields default to unsupported instances.- Specified by:
assemblein classAssembledChronology- Parameters:
fields- container of fields
-
julianToGregorianByYear
long julianToGregorianByYear(long instant) -
gregorianToJulianByYear
long gregorianToJulianByYear(long instant) -
julianToGregorianByWeekyear
long julianToGregorianByWeekyear(long instant) -
gregorianToJulianByWeekyear
long gregorianToJulianByWeekyear(long instant)
-