Class LimitChronology

  • All Implemented Interfaces:
    java.io.Serializable

    public final class LimitChronology
    extends AssembledChronology
    Wraps another Chronology to impose limits on the range of instants that the fields within a Chronology may support. The limits are applied to both DateTimeFields and DurationFields.

    Methods in DateTimeField and DurationField throw an IllegalArgumentException whenever given an input instant that is outside the limits or when an attempt is made to move an instant outside the limits.

    LimitChronology is thread-safe and immutable.

    Since:
    1.0
    See Also:
    Serialized Form
    • Method Detail

      • getInstance

        public static LimitChronology getInstance​(Chronology base,
                                                  ReadableDateTime lowerLimit,
                                                  ReadableDateTime upperLimit)
        Wraps another chronology, with datetime limits. When withUTC or withZone is called, the returned LimitChronology instance has the same limits, except they are time zone adjusted.
        Parameters:
        base - base chronology to wrap
        lowerLimit - inclusive lower limit, or null if none
        upperLimit - exclusive upper limit, or null if none
        Throws:
        java.lang.IllegalArgumentException - if chronology is null or limits are invalid
      • getLowerLimit

        public DateTime getLowerLimit()
        Returns the inclusive lower limit instant.
        Returns:
        lower limit
      • getUpperLimit

        public DateTime getUpperLimit()
        Returns the inclusive upper limit instant.
        Returns:
        upper limit
      • withUTC

        public Chronology withUTC()
        If this LimitChronology is already UTC, then this is returned. Otherwise, a new instance is returned, with the limits adjusted to the new time zone.
        Specified by:
        withUTC in class BaseChronology
        Returns:
        a version of this chronology that ignores time zones
      • withZone

        public Chronology withZone​(DateTimeZone zone)
        If this LimitChronology has the same time zone as the one given, then this is returned. Otherwise, a new instance is returned, with the limits adjusted to the new time zone.
        Specified by:
        withZone in class BaseChronology
        Parameters:
        zone - to use, or default if null
        Returns:
        a version of this chronology with a specific time zone
        See Also:
        ZonedChronology
      • getDateTimeMillis

        public long getDateTimeMillis​(int year,
                                      int monthOfYear,
                                      int dayOfMonth,
                                      int millisOfDay)
                               throws java.lang.IllegalArgumentException
        Description copied from class: BaseChronology
        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.

        Overrides:
        getDateTimeMillis in class AssembledChronology
        Parameters:
        year - year to use
        monthOfYear - month to use
        dayOfMonth - day of month to use
        millisOfDay - millisecond to use
        Returns:
        millisecond instant from 1970-01-01T00:00:00Z
        Throws:
        java.lang.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 java.lang.IllegalArgumentException
        Description copied from class: BaseChronology
        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.

        Overrides:
        getDateTimeMillis in class AssembledChronology
        Parameters:
        year - year to use
        monthOfYear - month to use
        dayOfMonth - day of month to use
        hourOfDay - hour to use
        minuteOfHour - minute to use
        secondOfMinute - second to use
        millisOfSecond - millisecond to use
        Returns:
        millisecond instant from 1970-01-01T00:00:00Z
        Throws:
        java.lang.IllegalArgumentException - if the values are invalid
      • getDateTimeMillis

        public long getDateTimeMillis​(long instant,
                                      int hourOfDay,
                                      int minuteOfHour,
                                      int secondOfMinute,
                                      int millisOfSecond)
                               throws java.lang.IllegalArgumentException
        Description copied from class: BaseChronology
        Returns a datetime millisecond instant, from from the given instant, 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:
        getDateTimeMillis in class AssembledChronology
        Parameters:
        instant - instant to start from
        hourOfDay - hour to use
        minuteOfHour - minute to use
        secondOfMinute - second to use
        millisOfSecond - millisecond to use
        Returns:
        millisecond instant from 1970-01-01T00:00:00Z
        Throws:
        java.lang.IllegalArgumentException - if the values are invalid
      • equals

        public boolean equals​(java.lang.Object obj)
        A limit chronology is only equal to a limit chronology with the same base chronology and limits.
        Overrides:
        equals in class java.lang.Object
        Parameters:
        obj - the object to compare to
        Returns:
        true if equal
        Since:
        1.4
      • hashCode

        public int hashCode()
        A suitable hashcode for the chronology.
        Overrides:
        hashCode in class java.lang.Object
        Returns:
        the hashcode
        Since:
        1.4
      • toString

        public java.lang.String toString()
        A debugging string for the chronology.
        Specified by:
        toString in class BaseChronology
        Returns:
        the debugging string