## org.jfree.data.time
Class Quarter

    java.lang.Object
      org.jfree.data.time.RegularTimePeriod
          org.jfree.data.time.Quarter

All Implemented Interfaces:
  java.io.Serializable, java.lang.Comparable, TimePeriod, org.jfree.date.MonthConstants

    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 Summary
`static int[]` `FIRST_MONTH_IN_QUARTER` The first month in each quarter.
`static int` `FIRST_QUARTER` Constant for quarter 1.
`static int[]` `LAST_MONTH_IN_QUARTER` The last month in each quarter.
`static int` `LAST_QUARTER` Constant for quarter 4.

Fields inherited from class org.jfree.data.time.RegularTimePeriod
`DEFAULT_TIME_ZONE, WORKING_CALENDAR`

Fields inherited from interface org.jfree.date.MonthConstants
`APRIL, AUGUST, DECEMBER, FEBRUARY, JANUARY, JULY, JUNE, MARCH, MAY, NOVEMBER, OCTOBER, SEPTEMBER`

Constructor Summary
`Quarter()` Constructs a new Quarter, based on the current system date/time.
`Quarter(java.util.Date time)` Constructs a new Quarter, based on a date/time and the default time zone.
`Quarter(java.util.Date time, java.util.TimeZone zone)` Constructs a Quarter, based on a date/time and time zone.
`Quarter(int quarter, int year)` Constructs a new quarter.
`Quarter(int quarter, Year year)` Constructs a new quarter.

Method Summary
`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.
`boolean` `equals(java.lang.Object obj)` Tests the equality of this Quarter object to an arbitrary object.
`long` `getFirstMillisecond()` Returns the first millisecond of the quarter.
`long` `getFirstMillisecond(java.util.Calendar calendar)` Returns the first millisecond in the Quarter, evaluated using the supplied calendar (which determines the time zone).
`long` `getLastMillisecond()` Returns the last millisecond of the quarter.
`long` `getLastMillisecond(java.util.Calendar calendar)` Returns the last millisecond of the Quarter, evaluated using the supplied calendar (which determines the time zone).
`int` `getQuarter()` Returns the quarter.
`long` `getSerialIndex()` Returns a serial index number for the quarter.
`Year` `getYear()` Returns the year.
`int` `getYearValue()` Returns the year.
`int` `hashCode()` Returns a hash code for this object instance.
`RegularTimePeriod` `next()` Returns the quarter following this one.
`static Quarter` `parseQuarter(java.lang.String s)` Parses the string argument as a quarter.
`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).
`RegularTimePeriod` `previous()` Returns the quarter preceding this one.
`java.lang.String` `toString()` Returns a string representing the quarter (e.g.

Methods inherited from class org.jfree.data.time.RegularTimePeriod
`createInstance, downsize, getEnd, getFirstMillisecond, getLastMillisecond, getMiddleMillisecond, getMiddleMillisecond, getMiddleMillisecond, getStart`

Methods inherited from class java.lang.Object
`clone, finalize, getClass, notify, notifyAll, wait, wait, wait`

Field Detail

### 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.

Constructor Detail

### Quarter

    public Quarter()

  Constructs a new Quarter, based on the current system date/time.

### Quarter

    public Quarter(int quarter,
                   int year)

  Constructs a new quarter.

  Parameters:
    `year` - the year (1900 to 9999).
    `quarter` - the quarter (1 to 4).

### Quarter

    public Quarter(int quarter,
                   Year year)

  Constructs a new quarter.

  Parameters:
    `quarter` - the quarter (1 to 4).
    `year` - the year (1900 to 9999).

### Quarter

    public Quarter(java.util.Date time)

  Constructs a new Quarter, based on a date/time and the default time zone.

  Parameters:
    `time` - the date/time.

### Quarter

    public Quarter(java.util.Date time,
                   java.util.TimeZone zone)

  Constructs a Quarter, based on a date/time and time zone.

  Parameters:
    `time` - the date/time.
    `zone` - the zone (`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.
  Since:
    1.0.3

### 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).
  Since:
    1.0.3

### previous

    public RegularTimePeriod previous()

  Returns the quarter preceding this one.

  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.

  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.