Class Quarter

  • All Implemented Interfaces:
    java.io.Serializable, java.lang.Comparable, MonthConstants, TimePeriod

    public class Quarter
    extends RegularTimePeriod
    implements java.io.Serializable
    Defines a quarter (in a given year). The range supported is Q1 1900 to Q4 9999. This class is immutable, which is a requirement for all RegularTimePeriod subclasses.
    See Also:
    Serialized Form
    • Field Detail

      • serialVersionUID

        private static final long serialVersionUID
        For serialization.
        See Also:
        Constant Field Values
      • FIRST_QUARTER

        public static final int FIRST_QUARTER
        Constant for quarter 1.
        See Also:
        Constant Field Values
      • LAST_QUARTER

        public static final int LAST_QUARTER
        Constant for quarter 4.
        See Also:
        Constant Field Values
      • FIRST_MONTH_IN_QUARTER

        public static final int[] FIRST_MONTH_IN_QUARTER
        The first month in each quarter.
      • LAST_MONTH_IN_QUARTER

        public static final int[] LAST_MONTH_IN_QUARTER
        The last month in each quarter.
      • year

        private short year
        The year in which the quarter falls.
      • quarter

        private byte quarter
        The quarter (1-4).
      • firstMillisecond

        private long firstMillisecond
        The first millisecond.
      • lastMillisecond

        private long lastMillisecond
        The last millisecond.
    • Constructor Detail

      • Quarter

        public Quarter()
        Constructs a new Quarter, based on the current system date/time. The time zone and locale are determined by the calendar returned by RegularTimePeriod.getCalendarInstance().
      • Quarter

        public Quarter​(int quarter,
                       int year)
        Constructs a new quarter. The time zone and locale are determined by the calendar returned by RegularTimePeriod.getCalendarInstance().
        Parameters:
        year - the year (1900 to 9999).
        quarter - the quarter (1 to 4).
      • Quarter

        public Quarter​(int quarter,
                       Year year)
        Constructs a new quarter. The time zone and locale are determined by the calendar returned by RegularTimePeriod.getCalendarInstance().
        Parameters:
        quarter - the quarter (1 to 4).
        year - the year (1900 to 9999).
      • Quarter

        public Quarter​(java.util.Date time,
                       java.util.TimeZone zone,
                       java.util.Locale locale)
        Creates a new Quarter instance, using the specified zone and locale.
        Parameters:
        time - the current time.
        zone - the time zone.
        locale - the locale.
      • Quarter

        public Quarter​(java.util.Date time,
                       java.util.Calendar calendar)
        Constructs a new instance, based on a particular date/time. The time zone and locale are determined by the calendar parameter.
        Parameters:
        time - the date/time (null not permitted).
        calendar - the calendar to use for calculations (null not permitted).
    • Method Detail

      • getQuarter

        public int getQuarter()
        Returns the quarter.
        Returns:
        The quarter.
      • getYear

        public Year getYear()
        Returns the year.
        Returns:
        The year.
      • getYearValue

        public int getYearValue()
        Returns the year.
        Returns:
        The year.
      • getFirstMillisecond

        public long getFirstMillisecond()
        Returns the first millisecond of the quarter. This will be determined relative to the time zone specified in the constructor, or in the calendar instance passed in the most recent call to the peg(Calendar) method.
        Specified by:
        getFirstMillisecond in class RegularTimePeriod
        Returns:
        The first millisecond of the quarter.
        See Also:
        getLastMillisecond()
      • getLastMillisecond

        public long getLastMillisecond()
        Returns the last millisecond of the quarter. This will be determined relative to the time zone specified in the constructor, or in the calendar instance passed in the most recent call to the peg(Calendar) method.
        Specified by:
        getLastMillisecond in class RegularTimePeriod
        Returns:
        The last millisecond of the quarter.
        See Also:
        getFirstMillisecond()
      • peg

        public void peg​(java.util.Calendar calendar)
        Recalculates the start date/time and end date/time for this time period relative to the supplied calendar (which incorporates a time zone).
        Specified by:
        peg in class RegularTimePeriod
        Parameters:
        calendar - the calendar (null not permitted).
      • previous

        public RegularTimePeriod previous()
        Returns the quarter preceding this one. No matter what time zone and locale this instance was created with, the returned instance will use the default calendar for time calculations, obtained with RegularTimePeriod.getCalendarInstance().
        Specified by:
        previous in class RegularTimePeriod
        Returns:
        The quarter preceding this one (or null if this is Q1 1900).
      • next

        public RegularTimePeriod next()
        Returns the quarter following this one. No matter what time zone and locale this instance was created with, the returned instance will use the default calendar for time calculations, obtained with RegularTimePeriod.getCalendarInstance().
        Specified by:
        next in class RegularTimePeriod
        Returns:
        The quarter following this one (or null if this is Q4 9999).
      • getSerialIndex

        public long getSerialIndex()
        Returns a serial index number for the quarter.
        Specified by:
        getSerialIndex in class RegularTimePeriod
        Returns:
        The serial index number.
      • equals

        public boolean equals​(java.lang.Object obj)
        Tests the equality of this Quarter object to an arbitrary object. Returns true if the target is a Quarter instance representing the same quarter as this object. In all other cases, returns false.
        Overrides:
        equals in class java.lang.Object
        Parameters:
        obj - the object (null permitted).
        Returns:
        true if quarter and year of this and the object are the same.
      • hashCode

        public int hashCode()
        Returns a hash code for this object instance. The approach described by Joshua Bloch in "Effective Java" has been used here:

        http://developer.java.sun.com/developer/Books/effectivejava /Chapter3.pdf

        Overrides:
        hashCode in class java.lang.Object
        Returns:
        A hash code.
      • compareTo

        public int compareTo​(java.lang.Object o1)
        Returns an integer indicating the order of this Quarter object relative to the specified object: negative == before, zero == same, positive == after.
        Specified by:
        compareTo in interface java.lang.Comparable
        Parameters:
        o1 - the object to compare
        Returns:
        negative == before, zero == same, positive == after.
      • toString

        public java.lang.String toString()
        Returns a string representing the quarter (e.g. "Q1/2002").
        Overrides:
        toString in class RegularTimePeriod
        Returns:
        A string representing the quarter.
      • getFirstMillisecond

        public long getFirstMillisecond​(java.util.Calendar calendar)
        Returns the first millisecond in the Quarter, evaluated using the supplied calendar (which determines the time zone).
        Specified by:
        getFirstMillisecond in class RegularTimePeriod
        Parameters:
        calendar - the calendar (null not permitted).
        Returns:
        The first millisecond in the Quarter.
        Throws:
        java.lang.NullPointerException - if calendar is null.
        See Also:
        RegularTimePeriod.getLastMillisecond(Calendar)
      • getLastMillisecond

        public long getLastMillisecond​(java.util.Calendar calendar)
        Returns the last millisecond of the Quarter, evaluated using the supplied calendar (which determines the time zone).
        Specified by:
        getLastMillisecond in class RegularTimePeriod
        Parameters:
        calendar - the calendar (null not permitted).
        Returns:
        The last millisecond of the Quarter.
        Throws:
        java.lang.NullPointerException - if calendar is null.
        See Also:
        RegularTimePeriod.getFirstMillisecond(Calendar)
      • parseQuarter

        public static Quarter parseQuarter​(java.lang.String s)
        Parses the string argument as a quarter.

        This method should accept the following formats: "YYYY-QN" and "QN-YYYY", where the "-" can be a space, a forward-slash (/), comma or a dash (-).

        Parameters:
        s - A string representing the quarter.
        Returns:
        The quarter.