Package com.day.cq.commons.date
Class DateUtil
- java.lang.Object
-
- com.day.cq.commons.date.DateUtil
-
public class DateUtil extends java.lang.ObjectDateUtilis a utility class that provides easy access to commonly used dates and for parsing/reading ISO8601 date strings.
-
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description static java.text.DateFormatgetDateFormat(java.lang.String pattern, java.lang.String defaultPattern, java.util.Locale locale)Returns a date format object, based on either a custom date pattern or a default date pattern, and aLocalestatic java.text.DateFormatgetDateFormat(java.lang.String pattern, java.text.DateFormat defaultDateFormat, java.util.Locale locale)Returns a date format object, based on either a custom date pattern or a default date pattern, and aLocalestatic java.text.DateFormatgetDateFormat(java.lang.String pattern, java.util.Locale locale)Returns a date format object, based on a date pattern and aLocalestatic java.lang.StringgetISO8601Date(java.util.Calendar calendar)Generate a full ISO 8601 date: "YYYY-MM-DDTHH:mm:ss.SSSZ".static java.lang.StringgetISO8601Date(java.util.Date date)Generate a full ISO 8601 date: "YYYY-MM-DDTHH:mm:ss.SSSZ".static java.lang.StringgetISO8601Date(java.util.Date date, java.util.TimeZone timeZone)Generate a full ISO 8601 date: "YYYY-MM-DDTHH:mm:ss.SSSZ".static java.lang.StringgetISO8601DateAndTimeNoMillis(java.util.Calendar calendar)Generate a ISO 8601 date with date and time, but without the milliseconds part: "YYYY-MM-DDTHH:mm:ssZ".static java.lang.StringgetISO8601DateAndTimeNoMillis(java.util.Date date)Generate a ISO 8601 date with date and time, but without the milliseconds part: "YYYY-MM-DDTHH:mm:ssZ".static java.lang.StringgetISO8601DateAndTimeNoMillis(java.util.Date date, java.util.TimeZone timeZone)Generate a ISO 8601 date with date and time, but without the milliseconds part: "YYYY-MM-DDTHH:mm:ssZ".static java.lang.StringgetISO8601DateNoTime(java.util.Calendar calendar)Generate a ISO 8601 date in the pure date form: "YYYY-MM-DD"static java.lang.StringgetISO8601DateNoTime(java.util.Date date)Generate a ISO 8601 date in the pure date form: "YYYY-MM-DD".static java.lang.StringgetISO8601DateNoTime(java.util.Date date, java.util.TimeZone timeZone)Generate a ISO 8601 date in the pure date form: "YYYY-MM-DD".java.util.CalendargetLastYearStart()java.util.CalendargetMonthStart()java.util.CalendargetNow()java.util.CalendargetThreeMonthsAgo()java.util.CalendargetToday()java.util.CalendargetWeekStart()java.util.CalendargetYearStart()static java.util.CalendarparseISO8601(java.lang.String iso8601Date)Parse the given string in ISO 8601 format and build a Calendar object.static java.util.CalendarparseISO8601(java.lang.String iso8601Date, java.util.TimeZone defaultTimeZone)Parse the given string in ISO 8601 format and build a Calendar object.
-
-
-
Constructor Detail
-
DateUtil
public DateUtil()
Initializes a DateUtil with the first day of week being the Monday.
-
DateUtil
public DateUtil(int firstDayOfWeek)
Initializes a DateUtil with a custom first day of the week.- Parameters:
firstDayOfWeek- the first day of the week.- See Also:
Calendar.DAY_OF_WEEK
-
-
Method Detail
-
getLastYearStart
public final java.util.Calendar getLastYearStart()
- Returns:
- calendar that represents the beginning of the last year.
-
getYearStart
public final java.util.Calendar getYearStart()
- Returns:
- calendar that represents the beginning of this year.
-
getThreeMonthsAgo
public final java.util.Calendar getThreeMonthsAgo()
- Returns:
- calendar that represents the date three months ago.
-
getMonthStart
public final java.util.Calendar getMonthStart()
- Returns:
- calendar that represents the beginning of this month.
-
getWeekStart
public final java.util.Calendar getWeekStart()
- Returns:
- calendar that represents the start of this week. Depends on
Calendar.setFirstDayOfWeek(int)!
-
getToday
public final java.util.Calendar getToday()
- Returns:
- calendar that represents the current date.
-
getNow
public final java.util.Calendar getNow()
- Returns:
- calendar that represents the current time.
-
parseISO8601
public static java.util.Calendar parseISO8601(java.lang.String iso8601Date) throws InvalidDateExceptionParse the given string in ISO 8601 format and build a Calendar object. If no timezone is given in the string, it will use the system's default timezone.- Parameters:
iso8601Date- the date in ISO 8601 format- Returns:
- a Calendar instance
- Throws:
InvalidDateException- if the date string is not valid
-
parseISO8601
public static java.util.Calendar parseISO8601(java.lang.String iso8601Date, java.util.TimeZone defaultTimeZone) throws InvalidDateExceptionParse the given string in ISO 8601 format and build a Calendar object. Allows to define the timezone if the string does not contain a timezone reference. Otherwise the returned calendar will always have the timezone that is in the ISO 8601 string.- Parameters:
iso8601Date- the date in ISO 8601 formatdefaultTimeZone- the timezone to use when the timezone is not specified in the iso-8601 string (ifnull, the system default timezone will be used)- Returns:
- a Calendar instance
- Throws:
InvalidDateException- if the date string is not valid
-
getISO8601Date
public static java.lang.String getISO8601Date(java.util.Calendar calendar)
Generate a full ISO 8601 date: "YYYY-MM-DDTHH:mm:ss.SSSZ".- Parameters:
calendar- a Calendar instance- Returns:
- a string representing the date in the full ISO 8601 format: "YYYY-MM-DDTHH:mm:ss.SSSZ"
-
getISO8601Date
public static java.lang.String getISO8601Date(java.util.Date date)
Generate a full ISO 8601 date: "YYYY-MM-DDTHH:mm:ss.SSSZ". It assumes the timezone of the date to be GMT (or UTC, "Z" at the end of ISO8601).- Parameters:
date- a Date instance representing a UTC time- Returns:
- a string representing the date in the full ISO 8601 format: "YYYY-MM-DDTHH:mm:ss.SSSZ"
-
getISO8601Date
public static java.lang.String getISO8601Date(java.util.Date date, java.util.TimeZone timeZone)Generate a full ISO 8601 date: "YYYY-MM-DDTHH:mm:ss.SSSZ". It uses the given timezone for interpreting the date value.- Parameters:
date- a Date instancetimeZone- the timeZone of the date- Returns:
- a string representing the date in the full ISO 8601 format: "YYYY-MM-DDTHH:mm:ss.SSSZ"
-
getISO8601DateAndTimeNoMillis
public static java.lang.String getISO8601DateAndTimeNoMillis(java.util.Calendar calendar)
Generate a ISO 8601 date with date and time, but without the milliseconds part: "YYYY-MM-DDTHH:mm:ssZ".- Parameters:
calendar- a Calendar instance- Returns:
- a string representing date and time except the milliseconds in the ISO 8601 format: "YYYY-MM-DDTHH:mm:ssZ"
-
getISO8601DateAndTimeNoMillis
public static java.lang.String getISO8601DateAndTimeNoMillis(java.util.Date date)
Generate a ISO 8601 date with date and time, but without the milliseconds part: "YYYY-MM-DDTHH:mm:ssZ". It assumes the timezone of the date to be GMT (or UTC, "Z" at the end of ISO8601).- Parameters:
date- a Date instance representing a UTC time- Returns:
- a string representing date and time except the milliseconds in the ISO 8601 format: "YYYY-MM-DDTHH:mm:ssZ"
-
getISO8601DateAndTimeNoMillis
public static java.lang.String getISO8601DateAndTimeNoMillis(java.util.Date date, java.util.TimeZone timeZone)Generate a ISO 8601 date with date and time, but without the milliseconds part: "YYYY-MM-DDTHH:mm:ssZ". It uses the given timezone for interpreting the date value.- Parameters:
date- a Date instancetimeZone- the timeZone of the date- Returns:
- a string representing date and time except the milliseconds in the ISO 8601 format: "YYYY-MM-DDTHH:mm:ssZ"
-
getISO8601DateNoTime
public static java.lang.String getISO8601DateNoTime(java.util.Calendar calendar)
Generate a ISO 8601 date in the pure date form: "YYYY-MM-DD"- Parameters:
calendar- a Calendar instance- Returns:
- a string representing only the date in the ISO 8601 format: "YYYY-MM-DD"
-
getISO8601DateNoTime
public static java.lang.String getISO8601DateNoTime(java.util.Date date)
Generate a ISO 8601 date in the pure date form: "YYYY-MM-DD". It assumes the timezone of the date to be GMT (or UTC, "Z" at the end of ISO8601).- Parameters:
date- a Date instance representing a UTC time.- Returns:
- a string representing only the date in the ISO 8601 format: "YYYY-MM-DD"
-
getISO8601DateNoTime
public static java.lang.String getISO8601DateNoTime(java.util.Date date, java.util.TimeZone timeZone)Generate a ISO 8601 date in the pure date form: "YYYY-MM-DD". It uses the given timezone for interpreting the date value.- Parameters:
date- a Date instance representing a datetimeZone- the timeZone of the date- Returns:
- a string representing only the date in the ISO 8601 format: "YYYY-MM-DD"
-
getDateFormat
public static java.text.DateFormat getDateFormat(java.lang.String pattern, java.util.Locale locale)Returns a date format object, based on a date pattern and aLocale- Parameters:
pattern- Date patternlocale- Date format localisation- Returns:
- Date format or
null
-
getDateFormat
public static java.text.DateFormat getDateFormat(java.lang.String pattern, java.lang.String defaultPattern, java.util.Locale locale)Returns a date format object, based on either a custom date pattern or a default date pattern, and aLocale- Parameters:
pattern- User provided date patterndefaultPattern- Default date format used if the user provided date pattern was not validlocale- Date format localisation- Returns:
- Custom date format (if valid) or default date format
-
getDateFormat
public static java.text.DateFormat getDateFormat(java.lang.String pattern, java.text.DateFormat defaultDateFormat, java.util.Locale locale)Returns a date format object, based on either a custom date pattern or a default date pattern, and aLocale- Parameters:
pattern- User provided date patterndefaultDateFormat- Default date format used if the user provided date pattern was not validlocale- Date format localisation- Returns:
- Custom date format (if valid) or default date format
-
-