org.jfree.date

Class SpreadsheetDate

Implemented Interfaces:
Comparable, Serializable, MonthConstants

public class SpreadsheetDate
extends SerialDate

Represents a date using an integer, in a similar fashion to the implementation in Microsoft Excel. The range of dates supported is 1-Jan-1900 to 31-Dec-9999.

Be aware that there is a deliberate bug in Excel that recognises the year 1900 as a leap year when in fact it is not a leap year. You can find more information on the Microsoft website in article Q181370:

http://support.microsoft.com/support/kb/articles/Q181/3/70.asp

Excel uses the convention that 1-Jan-1900 = 1. This class uses the convention 1-Jan-1900 = 2. The result is that the day number in this class will be different to the Excel figure for January and February 1900...but then Excel adds in an extra day (29-Feb-1900 which does not actually exist!) and from that point forward the day numbers will match.

Author:
David Gilbert

Field Summary

Fields inherited from class org.jfree.date.SerialDate

DATE_FORMAT_SYMBOLS, FIRST_WEEK_IN_MONTH, FOLLOWING, FOURTH_WEEK_IN_MONTH, FRIDAY, INCLUDE_BOTH, INCLUDE_FIRST, INCLUDE_NONE, INCLUDE_SECOND, LAST_WEEK_IN_MONTH, MAXIMUM_YEAR_SUPPORTED, MINIMUM_YEAR_SUPPORTED, MONDAY, NEAREST, PRECEDING, SATURDAY, SECOND_WEEK_IN_MONTH, SERIAL_LOWER_BOUND, SERIAL_UPPER_BOUND, SUNDAY, THIRD_WEEK_IN_MONTH, THURSDAY, TUESDAY, WEDNESDAY

Fields inherited from interface org.jfree.date.MonthConstants

APRIL, AUGUST, DECEMBER, FEBRUARY, JANUARY, JULY, JUNE, MARCH, MAY, NOVEMBER, OCTOBER, SEPTEMBER

Constructor Summary

SpreadsheetDate(int serial)
Standard constructor - creates a new date object representing the specified day number (which should be in the range 2 to 2958465.
SpreadsheetDate(int day, int month, int year)
Creates a new date instance.

Method Summary

int
compare(SerialDate other)
Returns the difference (in days) between this date and the specified 'other' date.
int
compareTo(Object other)
Implements the method required by the Comparable interface.
boolean
equals(Object object)
Tests the equality of this date with an arbitrary object.
int
getDayOfMonth()
Returns the day of the month.
int
getDayOfWeek()
Returns a code representing the day of the week.
int
getMonth()
Returns the month (January = 1, February = 2, March = 3).
int
getYYYY()
Returns the year (assume a valid range of 1900 to 9999).
int
hashCode()
Returns a hash code for this object instance.
boolean
isAfter(SerialDate other)
Returns true if this SerialDate represents the same date as the specified SerialDate.
boolean
isBefore(SerialDate other)
Returns true if this SerialDate represents an earlier date compared to the specified SerialDate.
boolean
isInRange(SerialDate d1, SerialDate d2)
Returns true if this SerialDate is within the specified range (INCLUSIVE).
boolean
isInRange(SerialDate d1, SerialDate d2, int include)
Returns true if this SerialDate is within the specified range (caller specifies whether or not the end-points are included).
boolean
isOn(SerialDate other)
Returns true if this SerialDate represents the same date as the specified SerialDate.
boolean
isOnOrAfter(SerialDate other)
Returns true if this SerialDate represents the same date as the specified SerialDate.
boolean
isOnOrBefore(SerialDate other)
Returns true if this SerialDate represents the same date as the specified SerialDate.
Date
toDate()
Returns a java.util.Date equivalent to this date.
int
toSerial()
Returns the serial number for the date, where 1 January 1900 = 2 (this corresponds, almost, to the numbering system used in Microsoft Excel for Windows and Lotus 1-2-3).

Methods inherited from class org.jfree.date.SerialDate

addDays, addMonths, addYears, compare, createInstance, createInstance, createInstance, getDayOfMonth, getDayOfWeek, getDescription, getEndOfCurrentMonth, getFollowingDayOfWeek, getFollowingDayOfWeek, getMonth, getMonths, getMonths, getNearestDayOfWeek, getNearestDayOfWeek, getPreviousDayOfWeek, getPreviousDayOfWeek, getYYYY, isAfter, isBefore, isInRange, isInRange, isLeapYear, isOn, isOnOrAfter, isOnOrBefore, isValidMonthCode, isValidWeekInMonthCode, isValidWeekdayCode, lastDayOfMonth, leapYearCount, monthCodeToQuarter, monthCodeToString, monthCodeToString, relativeToString, setDescription, stringToMonthCode, stringToWeekdayCode, toDate, toSerial, toString, weekInMonthToString, weekdayCodeToString

Constructor Details

SpreadsheetDate

public SpreadsheetDate(int serial)
Standard constructor - creates a new date object representing the specified day number (which should be in the range 2 to 2958465.
Parameters:
serial - the serial number for the day (range: 2 to 2958465).

SpreadsheetDate

public SpreadsheetDate(int day,
                       int month,
                       int year)
Creates a new date instance.
Parameters:
day - the day (in the range 1 to 28/29/30/31).
month - the month (in the range 1 to 12).
year - the year (in the range 1900 to 9999).

Method Details

compare

public int compare(SerialDate other)
Returns the difference (in days) between this date and the specified 'other' date.
Overrides:
compare in interface SerialDate
Parameters:
other - the date being compared to.
Returns:
The difference (in days) between this date and the specified 'other' date.

compareTo

public int compareTo(Object other)
Implements the method required by the Comparable interface.
Parameters:
other - the other object (usually another SerialDate).
Returns:
A negative integer, zero, or a positive integer as this object is less than, equal to, or greater than the specified object.

equals

public boolean equals(Object object)
Tests the equality of this date with an arbitrary object.

This method will return true ONLY if the object is an instance of the SerialDate base class, and it represents the same day as this SpreadsheetDate.

Parameters:
object - the object to compare (null permitted).
Returns:
A boolean.

getDayOfMonth

public int getDayOfMonth()
Returns the day of the month.
Overrides:
getDayOfMonth in interface SerialDate
Returns:
The day of the month.

getDayOfWeek

public int getDayOfWeek()
Returns a code representing the day of the week.

The codes are defined in the SerialDate class as: SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, and SATURDAY.

Overrides:
getDayOfWeek in interface SerialDate
Returns:
A code representing the day of the week.

getMonth

public int getMonth()
Returns the month (January = 1, February = 2, March = 3).
Overrides:
getMonth in interface SerialDate
Returns:
The month of the year.

getYYYY

public int getYYYY()
Returns the year (assume a valid range of 1900 to 9999).
Overrides:
getYYYY in interface SerialDate
Returns:
The year.

hashCode

public int hashCode()
Returns a hash code for this object instance.
Returns:
A hash code.

isAfter

public boolean isAfter(SerialDate other)
Returns true if this SerialDate represents the same date as the specified SerialDate.
Overrides:
isAfter in interface SerialDate
Parameters:
other - the date being compared to.
Returns:
true if this SerialDate represents the same date as the specified SerialDate.

isBefore

public boolean isBefore(SerialDate other)
Returns true if this SerialDate represents an earlier date compared to the specified SerialDate.
Overrides:
isBefore in interface SerialDate
Parameters:
other - the date being compared to.
Returns:
true if this SerialDate represents an earlier date compared to the specified SerialDate.

isInRange

public boolean isInRange(SerialDate d1,
                         SerialDate d2)
Returns true if this SerialDate is within the specified range (INCLUSIVE). The date order of d1 and d2 is not important.
Overrides:
isInRange in interface SerialDate
Parameters:
d1 - a boundary date for the range.
d2 - the other boundary date for the range.
Returns:
A boolean.

isInRange

public boolean isInRange(SerialDate d1,
                         SerialDate d2,
                         int include)
Returns true if this SerialDate is within the specified range (caller specifies whether or not the end-points are included). The order of d1 and d2 is not important.
Overrides:
isInRange in interface SerialDate
Parameters:
d1 - one boundary date for the range.
d2 - a second boundary date for the range.
include - a code that controls whether or not the start and end dates are included in the range.
Returns:
true if this SerialDate is within the specified range.

isOn

public boolean isOn(SerialDate other)
Returns true if this SerialDate represents the same date as the specified SerialDate.
Overrides:
isOn in interface SerialDate
Parameters:
other - the date being compared to.
Returns:
true if this SerialDate represents the same date as the specified SerialDate.

isOnOrAfter

public boolean isOnOrAfter(SerialDate other)
Returns true if this SerialDate represents the same date as the specified SerialDate.
Overrides:
isOnOrAfter in interface SerialDate
Parameters:
other - the date being compared to.
Returns:
true if this SerialDate represents the same date as the specified SerialDate.

isOnOrBefore

public boolean isOnOrBefore(SerialDate other)
Returns true if this SerialDate represents the same date as the specified SerialDate.
Overrides:
isOnOrBefore in interface SerialDate
Parameters:
other - the date being compared to.
Returns:
true if this SerialDate represents the same date as the specified SerialDate.

toDate

public Date toDate()
Returns a java.util.Date equivalent to this date.
Overrides:
toDate in interface SerialDate
Returns:
The date.

toSerial

public int toSerial()
Returns the serial number for the date, where 1 January 1900 = 2 (this corresponds, almost, to the numbering system used in Microsoft Excel for Windows and Lotus 1-2-3).
Overrides:
toSerial in interface SerialDate
Returns:
The serial number of this date.