|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object | +--org.jfree.workbook.date.SerialDate
An abstract class that defines our requirements for manipulating dates, without tying down a particular implementation.
Requirement 1 : match at least what Excel does for dates; Requirement 2 : class is immutable;
Why not just use java.util.Date? We will, when it makes sense. At times, java.util.Date can be *too* precise - it represents an instant in time, accurate to 1/1000th of a second (with the date itself depending on the time-zone). Sometimes we just want to represent a particular day (e.g. 21 January 2015) without concerning ourselves about the time of day, or the time-zone, or anything else. That's what we've defined SerialDate for.
You can call getInstance() to get a concrete subclass of SerialDate, without worrying about the exact implementation.
Field Summary | |
static int[] |
AGGREGATE_DAYS_TO_END_OF_MONTH
The number of days in a (non-leap) year up to the end of each month. |
static int[] |
AGGREGATE_DAYS_TO_END_OF_PRECEDING_MONTH
The number of days in a year up to the end of the preceding month. |
static java.text.DateFormatSymbols |
DATE_FORMAT_SYMBOLS
Date format symbols. |
static int |
FIRST_WEEK_IN_MONTH
A useful constant for referring to the first week in a month. |
static int |
FOLLOWING
Useful constant for specifying a day of the week relative to a fixed date. |
static int |
FOURTH_WEEK_IN_MONTH
A useful constant for referring to the fourth week in a month. |
static int |
FRIDAY
Useful constant for Friday. |
static int |
INCLUDE_BOTH
Useful range constant. |
static int |
INCLUDE_FIRST
Useful range constant. |
static int |
INCLUDE_NONE
Useful range constant. |
static int |
INCLUDE_SECOND
Useful range constant. |
static int[] |
LAST_DAY_OF_MONTH
The number of days in each month in non leap years. |
static int |
LAST_WEEK_IN_MONTH
A useful constant for referring to the last week in a month. |
static int[] |
LEAP_YEAR_AGGREGATE_DAYS_TO_END_OF_MONTH
The number of days in a leap year up to the end of each month. |
static int[] |
LEAP_YEAR_AGGREGATE_DAYS_TO_END_OF_PRECEDING_MONTH
The number of days in a leap year up to the end of the preceding month. |
static int |
MAXIMUM_YEAR_SUPPORTED
The highest year value supported by this date format. |
static int |
MINIMUM_YEAR_SUPPORTED
The lowest year value supported by this date format. |
static int |
MONDAY
Useful constant for Monday. |
static int |
NEAREST
Useful constant for specifying a day of the week relative to a fixed date. |
static int |
PRECEDING
Useful constant for specifying a day of the week relative to a fixed date. |
static int |
SATURDAY
Useful constant for Saturday. |
static int |
SECOND_WEEK_IN_MONTH
A useful constant for referring to the second week in a month. |
static int |
SERIAL_LOWER_BOUND
The serial number for 1 January 1900. |
static int |
SERIAL_UPPER_BOUND
The serial number for 31 December 9999. |
static int |
SUNDAY
Useful constant for Sunday. |
static int |
THIRD_WEEK_IN_MONTH
A useful constant for referring to the third week in a month. |
static int |
THURSDAY
Useful constant for Thrusday. |
static int |
TUESDAY
Useful constant for Tuesday. |
static int |
WEDNESDAY
Useful constant for Wednesday. |
Fields inherited from interface org.jfree.workbook.date.MonthConstants |
APRIL, AUGUST, DECEMBER, FEBRUARY, JANUARY, JULY, JUNE, MARCH, MAY, NOVEMBER, OCTOBER, SEPTEMBER |
Constructor Summary | |
SerialDate()
|
Method Summary | |
static SerialDate |
addDays(int days,
SerialDate base)
Creates a new date by adding the specified number of days to the base date. |
static SerialDate |
addMonths(int months,
SerialDate base)
Creates a new date by adding the specified number of months to the base date. |
static SerialDate |
addYears(int years,
SerialDate base)
Creates a new date by adding the specified number of years to the base date. |
abstract int |
compare(SerialDate other)
Returns the difference (in days) between this date and the specified 'other' date. |
static SerialDate |
createInstance(java.util.Date date)
Factory method that returns an instance of a subclass of SerialDate. |
static SerialDate |
createInstance(int serial)
Factory method that returns an instance of some concrete subclass of SerialDate . |
static SerialDate |
createInstance(int day,
int month,
int yyyy)
Factory method that returns an instance of some concrete subclass of SerialDate . |
abstract int |
getDayOfMonth()
Returns the day of the month. |
abstract int |
getDayOfWeek()
Returns the day of the week. |
java.lang.String |
getDescription()
Returns a description of the date. |
SerialDate |
getEndOfCurrentMonth(SerialDate base)
Rolls the date forward to the last day of the month. |
SerialDate |
getFollowingDayOfWeek(int targetDOW)
Returns the earliest date that falls on the specified day-of-the-week and is AFTER this date. |
static SerialDate |
getFollowingDayOfWeek(int targetWeekday,
SerialDate base)
Returns the earliest date that falls on the specified day-of-the-week and is AFTER the base date. |
abstract int |
getMonth()
Returns the month (January = 1, February = 2, March = 3). |
static java.lang.String[] |
getMonths()
Returns an array of month names. |
static java.lang.String[] |
getMonths(boolean shortened)
Returns an array of month names. |
SerialDate |
getNearestDayOfWeek(int targetDOW)
Returns the nearest date that falls on the specified day-of-the-week. |
static SerialDate |
getNearestDayOfWeek(int targetDOW,
SerialDate base)
Returns the date that falls on the specified day-of-the-week and is CLOSEST to the base date. |
SerialDate |
getPreviousDayOfWeek(int targetDOW)
Returns the latest date that falls on the specified day-of-the-week and is BEFORE this date. |
static SerialDate |
getPreviousDayOfWeek(int targetWeekday,
SerialDate base)
Returns the latest date that falls on the specified day-of-the-week and is BEFORE the base date. |
abstract int |
getYYYY()
Returns the year (assume a valid range of 1900 to 9999). |
abstract boolean |
isAfter(SerialDate other)
Returns true if this SerialDate represents the same date as the specified SerialDate. |
abstract boolean |
isBefore(SerialDate other)
Returns true if this SerialDate represents an earlier date compared to the specified SerialDate. |
abstract boolean |
isInRange(SerialDate d1,
SerialDate d2)
Returns true if this SerialDate is within the specified range (INCLUSIVE). |
abstract 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). |
static boolean |
isLeapYear(int yyyy)
Determines whether or not the specified year is a leap year. |
abstract boolean |
isOn(SerialDate other)
Returns true if this SerialDate represents the same date as the specified SerialDate. |
abstract boolean |
isOnOrAfter(SerialDate other)
Returns true if this SerialDate represents the same date as the specified SerialDate. |
abstract boolean |
isOnOrBefore(SerialDate other)
Returns true if this SerialDate represents the same date as the specified SerialDate. |
static boolean |
isValidMonthCode(int code)
Returns true if the supplied integer code represents a valid month. |
static boolean |
isValidWeekdayCode(int code)
Returns true if the supplied integer code represents a valid day-of-the-week, and false otherwise. |
static boolean |
isValidWeekInMonthCode(int code)
Returns true if the supplied integer code represents a valid week-in-the-month, and false otherwise. |
static int |
lastDayOfMonth(int month,
int yyyy)
Returns the number of the last day of the month, taking into account leap years. |
static int |
leapYearCount(int yyyy)
Returns the number of leap years from 1900 to the specified year INCLUSIVE. |
static int |
monthCodeToQuarter(int code)
Returns the quarter for the specified month. |
static java.lang.String |
monthCodeToString(int month)
Returns a string representing the supplied month. |
static java.lang.String |
monthCodeToString(int month,
boolean shortened)
Returns a string representing the supplied month. |
static java.lang.String |
relativeToString(int relative)
Returns a string representing the supplied 'relative'. |
void |
setDescription(java.lang.String description)
Sets the description for the date. |
static int |
stringToMonthCode(java.lang.String s)
Converts a string to a month code. |
static int |
stringToWeekdayCode(java.lang.String s)
Converts the supplied string to a day of the week. |
abstract java.util.Date |
toDate()
Returns a java.util.Date. |
abstract 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). |
java.lang.String |
toString()
Converts the date to a string. |
static java.lang.String |
weekdayCodeToString(int weekday)
Returns a string representing the supplied day-of-the-week. |
static java.lang.String |
weekInMonthToString(int count)
Returns a string corresponding to the week-in-the-month code. |
Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
Field Detail |
public static final java.text.DateFormatSymbols DATE_FORMAT_SYMBOLS
public static final int SERIAL_LOWER_BOUND
public static final int SERIAL_UPPER_BOUND
public static final int MINIMUM_YEAR_SUPPORTED
public static final int MAXIMUM_YEAR_SUPPORTED
public static final int MONDAY
public static final int TUESDAY
public static final int WEDNESDAY
public static final int THURSDAY
public static final int FRIDAY
public static final int SATURDAY
public static final int SUNDAY
public static final int[] LAST_DAY_OF_MONTH
public static final int[] AGGREGATE_DAYS_TO_END_OF_MONTH
public static final int[] AGGREGATE_DAYS_TO_END_OF_PRECEDING_MONTH
public static final int[] LEAP_YEAR_AGGREGATE_DAYS_TO_END_OF_MONTH
public static final int[] LEAP_YEAR_AGGREGATE_DAYS_TO_END_OF_PRECEDING_MONTH
public static final int FIRST_WEEK_IN_MONTH
public static final int SECOND_WEEK_IN_MONTH
public static final int THIRD_WEEK_IN_MONTH
public static final int FOURTH_WEEK_IN_MONTH
public static final int LAST_WEEK_IN_MONTH
public static final int INCLUDE_NONE
public static final int INCLUDE_FIRST
public static final int INCLUDE_SECOND
public static final int INCLUDE_BOTH
public static final int PRECEDING
public static final int NEAREST
public static final int FOLLOWING
Constructor Detail |
public SerialDate()
Method Detail |
public static boolean isValidWeekdayCode(int code)
code
- the code being checked for validity.
public static int stringToWeekdayCode(java.lang.String s)
s
- a string representing the day of the week.
-1
if the string is not convertable, the day of the week otherwise.public static java.lang.String weekdayCodeToString(int weekday)
Need to find a better approach.
weekday
- the day of the week.
public static java.lang.String[] getMonths()
public static java.lang.String[] getMonths(boolean shortened)
shortened
- a flag indicating that shortened month names should be returned.
public static boolean isValidMonthCode(int code)
code
- the code being checked for validity.
true
if the supplied integer code represents a valid month.public static int monthCodeToQuarter(int code)
code
- the month code (1-12).
public static java.lang.String monthCodeToString(int month)
The string returned is the long form of the month name taken from the default locale.
month
- the month.
public static java.lang.String monthCodeToString(int month, boolean shortened)
The string returned is the long or short form of the month name taken from the default locale.
month
- the month.shortened
- if true
return the abbreviation of the month.
public static int stringToMonthCode(java.lang.String s)
This method will return one of the constants JANUARY, FEBRUARY, ..., DECEMBER that corresponds to the string. If the string is not recognised, this method returns -1.
s
- the string to parse.
-1
if the string is not parseable, the month of the year otherwise.public static boolean isValidWeekInMonthCode(int code)
code
- the code being checked for validity.
true
if the supplied integer code represents a valid week-in-the-month.public static boolean isLeapYear(int yyyy)
yyyy
- the year (in the range 1900 to 9999).
true
if the specified year is a leap year.public static int leapYearCount(int yyyy)
Note that 1900 is not a leap year.
yyyy
- the year (in the range 1900 to 9999).
public static int lastDayOfMonth(int month, int yyyy)
month
- the month.yyyy
- the year (in the range 1900 to 9999).
public static SerialDate addDays(int days, SerialDate base)
days
- the number of days to add (can be negative).base
- the base date.
public static SerialDate addMonths(int months, SerialDate base)
If the base date is close to the end of the month, the day on the result may be adjusted slightly: 31 May + 1 month = 30 June.
months
- the number of months to add (can be negative).base
- the base date.
public static SerialDate addYears(int years, SerialDate base)
years
- the number of years to add (can be negative).base
- the base date.
public static SerialDate getPreviousDayOfWeek(int targetWeekday, SerialDate base)
targetWeekday
- a code for the target day-of-the-week.base
- the base date.
public static SerialDate getFollowingDayOfWeek(int targetWeekday, SerialDate base)
targetWeekday
- a code for the target day-of-the-week.base
- the base date.
public static SerialDate getNearestDayOfWeek(int targetDOW, SerialDate base)
targetDOW
- a code for the target day-of-the-week.base
- the base date.
public SerialDate getEndOfCurrentMonth(SerialDate base)
base
- the base date.
public static java.lang.String weekInMonthToString(int count)
Need to find a better approach.
count
- an integer code representing the week-in-the-month.
public static java.lang.String relativeToString(int relative)
Need to find a better approach.
relative
- a constant representing the 'relative'.
public static SerialDate createInstance(int day, int month, int yyyy)
SerialDate
.
day
- the day (1-31).month
- the month (1-12).yyyy
- the year (in the range 1900 to 9999).
public static SerialDate createInstance(int serial)
SerialDate
.
serial
- the serial number for the day (1 January 1900 = 2).
public static SerialDate createInstance(java.util.Date date)
date
- A Java date object.
public abstract int toSerial()
public abstract java.util.Date toDate()
java.util.Date
.public java.lang.String getDescription()
public void setDescription(java.lang.String description)
description
- the new description for the date.public java.lang.String toString()
toString
in class java.lang.Object
public abstract int getYYYY()
public abstract int getMonth()
public abstract int getDayOfMonth()
public abstract int getDayOfWeek()
public abstract int compare(SerialDate other)
The result is positive if this date is after the 'other' date and negative if it is before the 'other' date.
other
- the date being compared to.
public abstract boolean isOn(SerialDate other)
other
- the date being compared to.
true
if this SerialDate represents the same date as the specified
SerialDate.public abstract boolean isBefore(SerialDate other)
other
- The date being compared to.
true
if this SerialDate represents an earlier date compared to the
specified SerialDate.public abstract boolean isOnOrBefore(SerialDate other)
other
- the date being compared to.
true if this SerialDate represents the same date
as the specified SerialDate.
public abstract boolean isAfter(SerialDate other)
other
- the date being compared to.
true
if this SerialDate represents the same date
as the specified SerialDate.public abstract boolean isOnOrAfter(SerialDate other)
other
- the date being compared to.
true
if this SerialDate represents the same date
as the specified SerialDate.public abstract boolean isInRange(SerialDate d1, SerialDate d2)
d1
- one boundary date for the range.d2
- a second boundary date for the range.
true
if this SerialDate is within the specified range.public abstract boolean isInRange(SerialDate d1, SerialDate d2, int include)
d1
- one boundary date for the range.d2
- a second boundary date for the range.include
- if true
include d2 in the search.
true
if this SerialDate is within the specified range.public SerialDate getPreviousDayOfWeek(int targetDOW)
targetDOW
- a code for the target day-of-the-week.
public SerialDate getFollowingDayOfWeek(int targetDOW)
targetDOW
- a code for the target day-of-the-week.
public SerialDate getNearestDayOfWeek(int targetDOW)
targetDOW
- a code for the target day-of-the-week.
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |