Implements the Gregorian/Julian calendar system which is the calendar system
used in most of the world. Wherever possible, it is recommended to use the
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.
equals
public boolean equals(Object obj)
Checks if this chronology instance equals another.
obj
- the object to compare to
getDateTimeMillis
public long getDateTimeMillis(int year,
int monthOfYear,
int dayOfMonth,
int millisOfDay)
throws IllegalArgumentException
Returns 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.
- getDateTimeMillis in interface AssembledChronology
year
- year to usemonthOfYear
- month to usedayOfMonth
- day of month to usemillisOfDay
- millisecond to use
- millisecond instant from 1970-01-01T00:00:00Z
getDateTimeMillis
public long getDateTimeMillis(int year,
int monthOfYear,
int dayOfMonth,
int hourOfDay,
int minuteOfHour,
int secondOfMinute,
int millisOfSecond)
throws IllegalArgumentException
Returns 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.
- getDateTimeMillis in interface AssembledChronology
year
- year to usemonthOfYear
- month to usedayOfMonth
- day of month to usehourOfDay
- hour to useminuteOfHour
- minute to usesecondOfMinute
- second to usemillisOfSecond
- millisecond to use
- millisecond instant from 1970-01-01T00:00:00Z
getGregorianCutover
public Instant getGregorianCutover()
Gets the cutover instant between Gregorian and Julian chronologies.
getInstance
public static GJChronology 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.
getInstance
public static GJChronology getInstance(DateTimeZone zone)
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.
zone
- the time zone to use, null is default
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.
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
getInstance
public static GJChronology getInstance(DateTimeZone zone,
ReadableInstant gregorianCutover)
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.
zone
- the time zone to use, null is defaultgregorianCutover
- the cutover to use, null means default
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.
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
getInstanceUTC
public static GJChronology 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.
getMinimumDaysInFirstWeek
public int getMinimumDaysInFirstWeek()
Gets the minimum days needed for a week to be the first week in a year.
getZone
public DateTimeZone getZone()
Returns the DateTimeZone that this Chronology operates in, or null if
unspecified.
- getZone in interface AssembledChronology
- DateTimeZone null if unspecified
hashCode
public int hashCode()
A suitable hash code for the chronology.