Class Quarter

All Implemented Interfaces:
Serializable, Comparable, MonthConstants, TimePeriod

public class Quarter
extends RegularTimePeriod
implements 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 Details

  • Constructor Details

    • 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​(Date time)
      Constructs a new instance, based on a date/time. The time zone and locale are determined by the calendar returned by RegularTimePeriod.getCalendarInstance().
      Parameters:
      time - the date/time (null not permitted).
      See Also:
      Quarter(Date, TimeZone, Locale)
    • Quarter

      public Quarter​(Date time, TimeZone zone, 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​(Date time, 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 Details

    • 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​(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

      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

      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​(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 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 Object
      Returns:
      A hash code.
    • compareTo

      public int compareTo​(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 Comparable
      Parameters:
      o1 - the object to compare
      Returns:
      negative == before, zero == same, positive == after.
    • toString

      public 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​(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:
      NullPointerException - if calendar is null.
      See Also:
      RegularTimePeriod.getLastMillisecond(Calendar)
    • getLastMillisecond

      public long getLastMillisecond​(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:
      NullPointerException - if calendar is null.
      See Also:
      RegularTimePeriod.getFirstMillisecond(Calendar)
    • parseQuarter

      public static Quarter parseQuarter​(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.