Class JulianChronology

  • All Implemented Interfaces:
    java.io.Serializable

    public final class JulianChronology
    extends BasicGJChronology
    Implements a pure proleptic Julian calendar system, which defines every fourth year as leap. This implementation follows the leap year rule strictly, even for dates before 8 CE, where leap years were actually irregular. In the Julian calendar, year zero does not exist: 1 BCE is followed by 1 CE.

    Although the Julian calendar did not exist before 45 BCE, this chronology assumes it did, thus it is proleptic. This implementation also fixes the start of the year at January 1.

    JulianChronology is thread-safe and immutable.

    Since:
    1.0
    See Also:
    Wikipedia, GregorianChronology, GJChronology, Serialized Form
    • Field Detail

      • serialVersionUID

        private static final long serialVersionUID
        Serialization lock
        See Also:
        Constant Field Values
      • MIN_YEAR

        private static final int MIN_YEAR
        The lowest year that can be fully supported.
        See Also:
        Constant Field Values
      • MAX_YEAR

        private static final int MAX_YEAR
        The highest year that can be fully supported.
        See Also:
        Constant Field Values
      • INSTANCE_UTC

        private static final JulianChronology INSTANCE_UTC
        Singleton instance of a UTC JulianChronology
      • cCache

        private static final java.util.concurrent.ConcurrentHashMap<DateTimeZone,​JulianChronology[]> cCache
        Cache of zone to chronology arrays
    • Constructor Detail

      • JulianChronology

        JulianChronology​(Chronology base,
                         java.lang.Object param,
                         int minDaysInFirstWeek)
        Restricted constructor
    • Method Detail

      • adjustYearForSet

        static int adjustYearForSet​(int year)
      • getInstanceUTC

        public static JulianChronology getInstanceUTC()
        Gets an instance of the JulianChronology. The time zone of the returned instance is UTC.
        Returns:
        a singleton UTC instance of the chronology
      • getInstance

        public static JulianChronology getInstance()
        Gets an instance of the JulianChronology in the default time zone.
        Returns:
        a chronology in the default time zone
      • getInstance

        public static JulianChronology getInstance​(DateTimeZone zone)
        Gets an instance of the JulianChronology in the given time zone.
        Parameters:
        zone - the time zone to get the chronology in, null is default
        Returns:
        a chronology in the specified time zone
      • getInstance

        public static JulianChronology getInstance​(DateTimeZone zone,
                                                   int minDaysInFirstWeek)
        Gets an instance of the JulianChronology in the given time zone.
        Parameters:
        zone - the time zone to get the chronology in, null is default
        minDaysInFirstWeek - minimum number of days in first week of the year; default is 4
        Returns:
        a chronology in the specified time zone
      • readResolve

        private java.lang.Object readResolve()
        Serialization singleton
      • withUTC

        public Chronology withUTC()
        Gets the Chronology in the UTC time zone.
        Specified by:
        withUTC in class BaseChronology
        Returns:
        the chronology in UTC
      • getDateMidnightMillis

        long getDateMidnightMillis​(int year,
                                   int monthOfYear,
                                   int dayOfMonth)
                            throws java.lang.IllegalArgumentException
        Description copied from class: BasicChronology
        Gets the milliseconds for a date at midnight.
        Overrides:
        getDateMidnightMillis in class BasicChronology
        Parameters:
        year - the year
        monthOfYear - the month
        dayOfMonth - the day
        Returns:
        the milliseconds
        Throws:
        java.lang.IllegalArgumentException
      • isLeapYear

        boolean isLeapYear​(int year)
        Description copied from class: BasicChronology
        Is the specified year a leap year?
        Specified by:
        isLeapYear in class BasicChronology
        Parameters:
        year - the year to test
        Returns:
        true if leap
      • calculateFirstDayOfYearMillis

        long calculateFirstDayOfYearMillis​(int year)
        Description copied from class: BasicChronology
        Gets the millisecond value of the first day of the year.
        Specified by:
        calculateFirstDayOfYearMillis in class BasicChronology
        Returns:
        the milliseconds for the first of the year
      • getApproxMillisAtEpochDividedByTwo

        long getApproxMillisAtEpochDividedByTwo()
        Description copied from class: BasicChronology
        Returns a constant representing the approximate number of milliseconds elapsed from year 0 of this chronology, divided by two. This constant must be defined as:
            (yearAtEpoch * averageMillisPerYear + millisOfYearAtEpoch) / 2
         
        where epoch is 1970-01-01 (Gregorian).
        Specified by:
        getApproxMillisAtEpochDividedByTwo in class BasicChronology
      • assemble

        protected void assemble​(AssembledChronology.Fields fields)
        Description copied from class: AssembledChronology
        Invoked by the constructor and after deserialization to allow subclasses to define all of its supported fields. All unset fields default to unsupported instances.
        Overrides:
        assemble in class BasicChronology
        Parameters:
        fields - container of fields