Package org.jdesktop.swingx.calendar
Class CalendarUtils
- java.lang.Object
-
- org.jdesktop.swingx.calendar.CalendarUtils
-
public class CalendarUtils extends java.lang.Object
Calendar manipulation. PENDING: replace by something tested - as is c&p'ed dateUtils to work on a calendar instead of using long
-
-
Field Summary
Fields Modifier and Type Field Description static int
DECADE
static int
ONE_DAY
static int
ONE_HOUR
static int
ONE_MINUTE
static int
THREE_HOURS
static int
YEAR_IN_DECADE
-
Constructor Summary
Constructors Constructor Description CalendarUtils()
-
Method Summary
All Methods Static Methods Concrete Methods Modifier and Type Method Description static void
add(java.util.Calendar calendar, int field, int amount)
Increments the calendar field of the given calendar by amount.static boolean
areEqual(java.util.Date current, java.util.Date date)
Checks the given dates for being equal.private static int
decade(int year)
static void
endOfDay(java.util.Calendar calendar)
Adjust the given calendar to the last millisecond of the specified date.static java.util.Date
endOfDay(java.util.Calendar calendar, java.util.Date date)
Adjust the given calendar to the last millisecond of the given date.static void
endOfMonth(java.util.Calendar calendar)
Adjusts the calendar to the end of the current month.static void
endOfWeek(java.util.Calendar calendar)
Adjusts the calendar to the end of the current week.static java.util.Date
endOfWeek(java.util.Calendar calendar, java.util.Date date)
Adjusts the calendar to the end of the current week.static int
get(java.util.Calendar calendar, int field)
Gets the calendar field of the given calendar by amount.static java.util.Date
getEndOfDST(java.util.Calendar calendar)
Adjusts the Calendar to the end of the day of the last day in DST in the current year or unchanged if not using DST.static java.util.Date
getStartOfDST(java.util.Calendar calendar)
Adjusts the Calendar to the end of the day of the first day in DST in the current year or unchanged if not using DST.static boolean
isEndOfDay(java.util.Calendar calendar)
Returns a boolean indicating if the given calendar represents the end of a day (in the calendar's time zone).static boolean
isEndOfMonth(java.util.Calendar calendar)
Returns a boolean indicating if the given calendar represents the end of a month (in the calendar's time zone).static boolean
isEndOfWeek(java.util.Calendar calendar)
Returns a boolean indicating if the given calendar represents the end of a week (in the calendar's time zone).static boolean
isFlushed(java.util.Calendar calendar)
Returns a boolean to indicate whether the given calendar is flushed.private static boolean
isNativeField(int calendarField)
static boolean
isSame(java.util.Calendar today, java.util.Date now, int field)
Returns a boolean indicating whether the given Date is in the same period as the Date in the calendar, as defined by the calendar field.static boolean
isSameDay(java.util.Calendar today, java.util.Date now)
Returns a boolean indicating whether the given Date is the same day as the day in the calendar.static boolean
isStartOf(java.util.Calendar calendar, int field)
Returns a boolean indicating if the calendar is set to the start of a period as defined by the given field.static boolean
isStartOfDay(java.util.Calendar calendar)
Returns a boolean indicating if the given calendar represents the start of a day (in the calendar's time zone).static boolean
isStartOfDecade(java.util.Calendar calendar)
Returns a boolean indicating if the given calendar represents the start of a decade (in the calendar's time zone).static boolean
isStartOfMonth(java.util.Calendar calendar)
Returns a boolean indicating if the given calendar represents the start of a month (in the calendar's time zone).static boolean
isStartOfWeek(java.util.Calendar calendar)
Returns a boolean indicating if the given calendar represents the start of a month (in the calendar's time zone).static boolean
isStartOfYear(java.util.Calendar calendar)
Returns a boolean indicating if the given calendar represents the start of a year (in the calendar's time zone).static void
set(java.util.Calendar calendar, int field, int value)
Sets the calendar field of the given calendar by amount.static void
startOf(java.util.Calendar calendar, int field)
Adjusts the given calendar to the start of the period as indicated by the given field.static void
startOfDay(java.util.Calendar calendar)
Adjust the given calendar to the first millisecond of the current day.static java.util.Date
startOfDay(java.util.Calendar calendar, java.util.Date date)
Adjust the given calendar to the first millisecond of the given date.static void
startOfDecade(java.util.Calendar calendar)
Adjusts the given Calendar to the start of the decade.static java.util.Date
startOfDecade(java.util.Calendar calendar, java.util.Date date)
Adjusts the given Calendar to the start of the decade as defined by the given date.static void
startOfMonth(java.util.Calendar calendar)
Adjusts the calendar to the start of the current month.static void
startOfWeek(java.util.Calendar calendar)
Adjusts the calendar to the start of the current week.static java.util.Date
startOfWeek(java.util.Calendar calendar, java.util.Date date)
Adjusts the calendar to the start of the current week.static void
startOfYear(java.util.Calendar calendar)
Adjusts the given Calendar to the start of the year.static java.util.Date
startOfYear(java.util.Calendar calendar, java.util.Date date)
Adjusts the given Calendar to the start of the year as defined by the given date.
-
-
-
Field Detail
-
ONE_MINUTE
public static final int ONE_MINUTE
- See Also:
- Constant Field Values
-
ONE_HOUR
public static final int ONE_HOUR
- See Also:
- Constant Field Values
-
THREE_HOURS
public static final int THREE_HOURS
- See Also:
- Constant Field Values
-
ONE_DAY
public static final int ONE_DAY
- See Also:
- Constant Field Values
-
DECADE
public static final int DECADE
- See Also:
- Constant Field Values
-
YEAR_IN_DECADE
public static final int YEAR_IN_DECADE
- See Also:
- Constant Field Values
-
-
Method Detail
-
add
public static void add(java.util.Calendar calendar, int field, int amount)
Increments the calendar field of the given calendar by amount.- Parameters:
calendar
-field
- the field to increment, allowed are all fields known to Calendar plus DECADE.amount
-- Throws:
java.lang.IllegalArgumentException
-
get
public static int get(java.util.Calendar calendar, int field)
Gets the calendar field of the given calendar by amount.- Parameters:
calendar
-field
- the field to get, allowed are all fields known to Calendar plus DECADE.- Throws:
java.lang.IllegalArgumentException
-
set
public static void set(java.util.Calendar calendar, int field, int value)
Sets the calendar field of the given calendar by amount.NOTE: the custom field implementations are very naive (JSR-310 will do better) - for decade: value must be positive, value must be a multiple of 10 and is interpreted as the first-year-of-the-decade - for year-in-decade: value is added/substracted to/from the start-of-decade of the date of the given calendar
- Parameters:
calendar
-field
- the field to increment, allowed are all fields known to Calendar plus DECADE.value
- the decade to set, must be a- Throws:
java.lang.IllegalArgumentException
- if the field is unsupported or the value is not dividable by 10 or negative.
-
isNativeField
private static boolean isNativeField(int calendarField)
- Parameters:
calendarField
-- Returns:
-
getEndOfDST
public static java.util.Date getEndOfDST(java.util.Calendar calendar)
Adjusts the Calendar to the end of the day of the last day in DST in the current year or unchanged if not using DST. Returns the calendar's date or null, if not using DST.- Parameters:
calendar
- the calendar to adjust- Returns:
- the end of day of the last day in DST, or null if not using DST.
-
getStartOfDST
public static java.util.Date getStartOfDST(java.util.Calendar calendar)
Adjusts the Calendar to the end of the day of the first day in DST in the current year or unchanged if not using DST. Returns the calendar's date or null, if not using DST.Note: the start of the day of the first day in DST is ill-defined!
- Parameters:
calendar
- the calendar to adjust- Returns:
- the start of day of the first day in DST, or null if not using DST.
-
isStartOfDay
public static boolean isStartOfDay(java.util.Calendar calendar)
Returns a boolean indicating if the given calendar represents the start of a day (in the calendar's time zone). The calendar is unchanged.- Parameters:
calendar
- the calendar to check.- Returns:
- true if the calendar's time is the start of the day, false otherwise.
-
isEndOfDay
public static boolean isEndOfDay(java.util.Calendar calendar)
Returns a boolean indicating if the given calendar represents the end of a day (in the calendar's time zone). The calendar is unchanged.- Parameters:
calendar
- the calendar to check.- Returns:
- true if the calendar's time is the end of the day, false otherwise.
-
isStartOfMonth
public static boolean isStartOfMonth(java.util.Calendar calendar)
Returns a boolean indicating if the given calendar represents the start of a month (in the calendar's time zone). Returns true, if the time is the start of the first day of the month, false otherwise. The calendar is unchanged.- Parameters:
calendar
- the calendar to check.- Returns:
- true if the calendar's time is the start of the first day of the month, false otherwise.
-
isEndOfMonth
public static boolean isEndOfMonth(java.util.Calendar calendar)
Returns a boolean indicating if the given calendar represents the end of a month (in the calendar's time zone). Returns true, if the time is the end of the last day of the month, false otherwise. The calendar is unchanged.- Parameters:
calendar
- the calendar to check.- Returns:
- true if the calendar's time is the end of the last day of the month, false otherwise.
-
isStartOfWeek
public static boolean isStartOfWeek(java.util.Calendar calendar)
Returns a boolean indicating if the given calendar represents the start of a month (in the calendar's time zone). Returns true, if the time is the start of the first day of the month, false otherwise. The calendar is unchanged.- Parameters:
calendar
- the calendar to check.- Returns:
- true if the calendar's time is the start of the first day of the month, false otherwise.
-
isEndOfWeek
public static boolean isEndOfWeek(java.util.Calendar calendar)
Returns a boolean indicating if the given calendar represents the end of a week (in the calendar's time zone). Returns true, if the time is the end of the last day of the week, false otherwise. The calendar is unchanged.- Parameters:
calendar
- the calendar to check.- Returns:
- true if the calendar's time is the end of the last day of the week, false otherwise.
-
startOfWeek
public static void startOfWeek(java.util.Calendar calendar)
Adjusts the calendar to the start of the current week. That is, first day of the week with all time fields cleared.- Parameters:
calendar
- the calendar to adjust.
-
endOfWeek
public static void endOfWeek(java.util.Calendar calendar)
Adjusts the calendar to the end of the current week. That is, last day of the week with all time fields at max.- Parameters:
calendar
- the calendar to adjust.
-
endOfWeek
public static java.util.Date endOfWeek(java.util.Calendar calendar, java.util.Date date)
Adjusts the calendar to the end of the current week. That is, last day of the week with all time fields at max. The Date of the adjusted Calendar is returned.- Parameters:
calendar
- calendar to adjust.date
- the Date to use.- Returns:
- the end of the week of the given date
-
startOfWeek
public static java.util.Date startOfWeek(java.util.Calendar calendar, java.util.Date date)
Adjusts the calendar to the start of the current week. That is, last day of the week with all time fields at max. The Date of the adjusted Calendar is returned.- Parameters:
calendar
- calendar to adjust.date
- the Date to use.- Returns:
- the start of the week of the given date
-
startOfDecade
public static void startOfDecade(java.util.Calendar calendar)
Adjusts the given Calendar to the start of the decade.- Parameters:
calendar
- the calendar to adjust.
-
decade
private static int decade(int year)
- Parameters:
year
-- Returns:
-
startOfDecade
public static java.util.Date startOfDecade(java.util.Calendar calendar, java.util.Date date)
Adjusts the given Calendar to the start of the decade as defined by the given date. Returns the calendar's Date.- Parameters:
calendar
- calendar to adjust.date
- the Date to use.- Returns:
- the start of the decade of the given date
-
isStartOfDecade
public static boolean isStartOfDecade(java.util.Calendar calendar)
Returns a boolean indicating if the given calendar represents the start of a decade (in the calendar's time zone). Returns true, if the time is the start of the first day of the decade, false otherwise. The calendar is unchanged.- Parameters:
calendar
- the calendar to check.- Returns:
- true if the calendar's time is the start of the first day of the month, false otherwise.
-
startOfYear
public static void startOfYear(java.util.Calendar calendar)
Adjusts the given Calendar to the start of the year.- Parameters:
calendar
- the calendar to adjust.
-
startOfYear
public static java.util.Date startOfYear(java.util.Calendar calendar, java.util.Date date)
Adjusts the given Calendar to the start of the year as defined by the given date. Returns the calendar's Date.- Parameters:
calendar
- calendar to adjust.date
- the Date to use.- Returns:
- the start of the year of the given date
-
isStartOfYear
public static boolean isStartOfYear(java.util.Calendar calendar)
Returns a boolean indicating if the given calendar represents the start of a year (in the calendar's time zone). Returns true, if the time is the start of the first day of the year, false otherwise. The calendar is unchanged.- Parameters:
calendar
- the calendar to check.- Returns:
- true if the calendar's time is the start of the first day of the month, false otherwise.
-
startOfMonth
public static void startOfMonth(java.util.Calendar calendar)
Adjusts the calendar to the start of the current month. That is, first day of the month with all time fields cleared.- Parameters:
calendar
- calendar to adjust.
-
endOfMonth
public static void endOfMonth(java.util.Calendar calendar)
Adjusts the calendar to the end of the current month. That is the last day of the month with all time-fields at max.- Parameters:
calendar
- calendar to adjust.
-
startOfDay
public static java.util.Date startOfDay(java.util.Calendar calendar, java.util.Date date)
Adjust the given calendar to the first millisecond of the given date. that is all time fields cleared. The Date of the adjusted Calendar is returned.- Parameters:
calendar
- calendar to adjust.date
- the Date to use.- Returns:
- the start of the day of the given date
-
endOfDay
public static java.util.Date endOfDay(java.util.Calendar calendar, java.util.Date date)
Adjust the given calendar to the last millisecond of the given date. that is all time fields cleared. The Date of the adjusted Calendar is returned.- Parameters:
calendar
- calendar to adjust.date
- the Date to use.- Returns:
- the end of the day of the given date
-
startOfDay
public static void startOfDay(java.util.Calendar calendar)
Adjust the given calendar to the first millisecond of the current day. that is all time fields cleared.- Parameters:
calendar
- calendar to adjust.
-
endOfDay
public static void endOfDay(java.util.Calendar calendar)
Adjust the given calendar to the last millisecond of the specified date.- Parameters:
calendar
- calendar to adjust.
-
startOf
public static void startOf(java.util.Calendar calendar, int field)
Adjusts the given calendar to the start of the period as indicated by the given field. This delegates to startOfDay, -Week, -Month, -Year as appropriate.- Parameters:
calendar
-field
- the period to adjust, allowed are Calendar.DAY_OF_MONTH, -.MONTH, -.WEEK and YEAR and CalendarUtils.DECADE.
-
isStartOf
public static boolean isStartOf(java.util.Calendar calendar, int field)
Returns a boolean indicating if the calendar is set to the start of a period as defined by the given field. This delegates to startOfDay, -Week, -Month, -Year as appropriate. The calendar is unchanged.- Parameters:
calendar
-field
- the period to adjust, allowed are Calendar.DAY_OF_MONTH, -.MONTH, -.WEEK and YEAR and CalendarUtils.DECADE.- Throws:
java.lang.IllegalArgumentException
- if the field is not supported.
-
areEqual
public static boolean areEqual(java.util.Date current, java.util.Date date)
Checks the given dates for being equal.- Parameters:
current
- one of the dates to comparedate
- the otherr of the dates to compare- Returns:
- true if the two given dates both are null or both are not null and equal, false otherwise.
-
isSameDay
public static boolean isSameDay(java.util.Calendar today, java.util.Date now)
Returns a boolean indicating whether the given Date is the same day as the day in the calendar. Calendar and date are unchanged by the check.- Parameters:
today
- the Calendar representing a date, must not be null.now
- the date to compare to, must not be null- Returns:
- true if the calendar and date represent the same day in the given calendar.
-
isSame
public static boolean isSame(java.util.Calendar today, java.util.Date now, int field)
Returns a boolean indicating whether the given Date is in the same period as the Date in the calendar, as defined by the calendar field. Calendar and date are unchanged by the check.- Parameters:
today
- the Calendar representing a date, must not be null.now
- the date to compare to, must not be null- Returns:
- true if the calendar and date represent the same day in the given calendar.
-
isFlushed
public static boolean isFlushed(java.util.Calendar calendar)
Returns a boolean to indicate whether the given calendar is flushed.The only way to guarantee a flushed state is to let client code call getTime or getTimeInMillis. See Despairing in Calendar
Note: this if for testing only and not entirely safe!
- Parameters:
calendar
-- Returns:
-
-