Class DateUtil


  • public class DateUtil
    extends Object
    Utility methods related to dates.
    Author:
    Joel Costigliola, Mikhail Mazursky
    • Field Detail

      • ISO_DATE_FORMAT

        private static final DateFormat ISO_DATE_FORMAT
        ISO 8601 date format (yyyy-MM-dd), example : 2003-04-23
      • ISO_DATE_TIME_FORMAT

        private static final DateFormat ISO_DATE_TIME_FORMAT
        ISO 8601 local date-time format (yyyy-MM-dd'T'HH:mm:ss), example : 2003-04-26T13:01:02
      • ISO_DATE_TIME_FORMAT_WITH_MS

        private static final DateFormat ISO_DATE_TIME_FORMAT_WITH_MS
        ISO 8601 local date-time format with millisecond (yyyy-MM-dd'T'HH:mm:ss.SSS), example : 2003-04-26T03:01:02.999
    • Constructor Detail

      • DateUtil

        public DateUtil()
    • Method Detail

      • newIsoDateFormat

        public static DateFormat newIsoDateFormat()
        ISO 8601 date format (yyyy-MM-dd), example : 2003-04-23
        Returns:
        a yyyy-MM-dd DateFormat
      • newIsoDateTimeWithIsoTimeZoneFormat

        public static DateFormat newIsoDateTimeWithIsoTimeZoneFormat()
        ISO 8601 date-time format with ISO time zone (yyyy-MM-dd'T'HH:mm:ssX), example : 2003-04-26T03:01:02+00:00
        Returns:
        a yyyy-MM-dd'T'HH:mm:ssX DateFormat
      • newIsoDateTimeFormat

        public static DateFormat newIsoDateTimeFormat()
        ISO 8601 date-time format (yyyy-MM-dd'T'HH:mm:ss), example : 2003-04-26T13:01:02
        Returns:
        a yyyy-MM-dd'T'HH:mm:ss DateFormat
      • newIsoDateTimeWithMsFormat

        public static DateFormat newIsoDateTimeWithMsFormat()
        ISO 8601 date-time format with millisecond (yyyy-MM-dd'T'HH:mm:ss.SSS), example : 2003-04-26T03:01:02.999
        Returns:
        a yyyy-MM-dd'T'HH:mm:ss.SSS DateFormat
      • newIsoDateTimeWithMsAndIsoTimeZoneFormat

        public static DateFormat newIsoDateTimeWithMsAndIsoTimeZoneFormat()
        ISO 8601 date-time format with millisecond and ISO time zone (yyyy-MM-dd'T'HH:mm:ss.SSSX), example : 2003-04-26T03:01:02.758+00:00
        Returns:
        a yyyy-MM-dd'T'HH:mm:ss.SSSX DateFormat
      • newTimestampDateFormat

        public static DateFormat newTimestampDateFormat()
        Timestamp date-time format with millisecond (yyyy-MM-dd HH:mm:ss.SSS), example : 2003-04-26 03:01:02.999
        Returns:
        a yyyy-MM-dd HH:mm:ss.SSS DateFormat
      • strictDateFormatForPattern

        private static DateFormat strictDateFormatForPattern​(String pattern)
      • formatAsDatetime

        public static String formatAsDatetime​(Date date)
        Formats the given date using the ISO 8601 date-time format (yyyy-MM-dd'T'HH:mm:ss).
        Method is synchronized because SimpleDateFormat is not thread safe (sigh).

        Returns null if given the date is null.

        Parameters:
        date - the date to format.
        Returns:
        the formatted date or null if given the date was null.
      • formatAsDatetimeWithMs

        public static String formatAsDatetimeWithMs​(Date date)
        Formats the given date using the ISO 8601 date-time format with millisecond (yyyy-MM-dd'T'HH:mm:ss:SSS).
        Method is synchronized because SimpleDateFormat is not thread safe (sigh).

        Returns null if given the date is null.

        Parameters:
        date - the date to format.
        Returns:
        the formatted date or null if given the date was null.
      • formatAsDatetime

        public static String formatAsDatetime​(Calendar calendar)
        Formats the date of the given calendar using the ISO 8601 date-time format (yyyy-MM-dd'T'HH:mm:ss).
        Method is thread safe.

        Returns null if the given calendar is null.

        Parameters:
        calendar - the calendar to format.
        Returns:
        the formatted calendar or null if the given calendar was null.
      • parse

        public static Date parse​(String dateAsString)
        Utility method to parse a Date following ISO_DATE_FORMAT, returns null if the given String is null.
        Parameters:
        dateAsString - the string to parse as a Date following ISO_DATE_FORMAT
        Returns:
        the corresponding Date or null if the given String is null.
        Throws:
        RuntimeException - encapsulating ParseException if the string can't be parsed as a Date
      • parseDatetime

        public static Date parseDatetime​(String dateAsString)
        Utility method to parse a Date following ISO_DATE_TIME_FORMAT, returns null if the given String is null.

        Example:

         Date date = parseDatetime("2003-04-26T03:01:02");
        Parameters:
        dateAsString - the string to parse as a Date following ISO_DATE_TIME_FORMAT
        Returns:
        the corresponding Date with time details or null if the given String is null.
        Throws:
        RuntimeException - encapsulating ParseException if the string can't be parsed as a Date
      • parseDatetimeWithMs

        public static Date parseDatetimeWithMs​(String dateAsString)
        Utility method to parse a Date following ISO_DATE_TIME_FORMAT_WITH_MS, returns null if the given String is null.

        Example:

         Date date = parseDatetimeWithMs("2003-04-26T03:01:02.999");
        Parameters:
        dateAsString - the string to parse as a Date following ISO_DATE_TIME_FORMAT_WITH_MS
        Returns:
        the corresponding Date with time details or null if the given String is null.
        Throws:
        RuntimeException - encapsulating ParseException if the string can't be parsed as a Date
      • toCalendar

        public static Calendar toCalendar​(Date date)
        Converts the given Date to Calendar, returns null if the given Date is null.
        Parameters:
        date - the date to convert to a Calendar.
        Returns:
        the Calendar corresponding to the given Date or null if the given Date is null.
      • yearOf

        public static int yearOf​(Date date)
        Extracts the year of the given Date.
        Parameters:
        date - the date to extract the year from - must not be null.
        Returns:
        the year of the given Date
        Throws:
        NullPointerException - if given Date is null
      • monthOf

        public static int monthOf​(Date date)
        Dates Extracts the month of the given Date starting at 1 (January=1, February=2, ...).
        Parameters:
        date - the date to extract the month from - must not be null.
        Returns:
        the month of the given Date starting at 1 (January=1, February=2, ...)
        Throws:
        NullPointerException - if given Date is null
      • dayOfMonthOf

        public static int dayOfMonthOf​(Date date)
        Dates Extracts the day of month of the given Date.
        Parameters:
        date - the date to extract the day of month from - must not be null.
        Returns:
        the day of month of the given Date
        Throws:
        NullPointerException - if given Date is null
      • dayOfWeekOf

        public static int dayOfWeekOf​(Date date)
        Extracts the day of week of the given Date, returned value follows Calendar.DAY_OF_WEEK .
        Parameters:
        date - the date to extract the day of week from - must not be null.
        Returns:
        the day of week of the given Date
        Throws:
        NullPointerException - if given Date is null
      • hourOfDayOf

        public static int hourOfDayOf​(Date date)
        Extracts the hour of day if the given Date (24-hour clock).
        Parameters:
        date - the date to extract the hour of day from - must not be null.
        Returns:
        the hour of day of the given Date (24-hour clock)
        Throws:
        NullPointerException - if given Date is null
      • minuteOf

        public static int minuteOf​(Date date)
        Dates Extracts the minute of the given Date.
        Parameters:
        date - the date to extract the minute from - must not be null.
        Returns:
        the minute of the given Date
        Throws:
        NullPointerException - if given Date is null
      • secondOf

        public static int secondOf​(Date date)
        Extracts the second of the given Date.
        Parameters:
        date - the date to extract the second from - must not be null.
        Returns:
        the second of the given Date
        Throws:
        NullPointerException - if given Date is null
      • millisecondOf

        public static int millisecondOf​(Date date)
        Extracts the millisecond of the given Date.
        Parameters:
        date - the date to extract the millisecond from - must not be null.
        Returns:
        the millisecond of the given Date
        Throws:
        NullPointerException - if given Date is null
      • timeDifference

        public static long timeDifference​(Date date1,
                                          Date date2)
        Compute the time difference between the two given dates in milliseconds, it always gives a positive result.
        Parameters:
        date1 - the first date.
        date2 - the second date.
        Returns:
        the difference between the two given dates in milliseconds
        Throws:
        IllegalArgumentException - if one a the given Date is null.
      • truncateTime

        public static Date truncateTime​(Date date)
        Returns a copy of the given date without the time part (which is set to 00:00:00), for example :
        truncateTime(2008-12-29T23:45:12) will give 2008-12-29T00:00:00.

        Returns null if the given Date is null.

        Parameters:
        date - we want to get the day part (the parameter is read only).
        Returns:
        the truncated date.
      • now

        public static Date now()
      • yesterday

        public static Date yesterday()
      • tomorrow

        public static Date tomorrow()
      • formatTimeDifference

        public static String formatTimeDifference​(Date date1,
                                                  Date date2)
        Utility method to display a human readable time difference.
        Parameters:
        date1 - the first date
        date2 - the second date
        Returns:
        a human readable time difference.