Class DateUtil


  • public class DateUtil
    extends java.lang.Object
    Utility methods related to dates.
    • Field Summary

      Fields 
      Modifier and Type Field Description
      private static java.text.DateFormat ISO_DATE_FORMAT
      ISO 8601 date format (yyyy-MM-dd), example : 2003-04-23
      private static java.text.DateFormat ISO_DATE_TIME_FORMAT
      ISO 8601 local date-time format (yyyy-MM-dd'T'HH:mm:ss), example : 2003-04-26T13:01:02
      private static java.text.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 Summary

      Constructors 
      Constructor Description
      DateUtil()  
    • Method Summary

      All Methods Static Methods Concrete Methods 
      Modifier and Type Method Description
      static int dayOfMonthOf​(java.util.Date date)
      Dates Extracts the day of month of the given Date.
      static int dayOfWeekOf​(java.util.Date date)
      Extracts the day of week of the given Date, returned value follows Calendar.DAY_OF_WEEK .
      static java.lang.String formatAsDatetime​(java.util.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.
      static java.lang.String formatAsDatetime​(java.util.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).
      static java.lang.String formatAsDatetimeWithMs​(java.util.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).
      static java.lang.String formatTimeDifference​(java.util.Date date1, java.util.Date date2)
      Utility method to display a human readable time difference.
      static int hourOfDayOf​(java.util.Date date)
      Extracts the hour of day if the given Date (24-hour clock).
      static int millisecondOf​(java.util.Date date)
      Extracts the millisecond of the given Date.
      static int minuteOf​(java.util.Date date)
      Dates Extracts the minute of the given Date.
      static int monthOf​(java.util.Date date)
      Dates Extracts the month of the given Date starting at 1 (January=1, February=2, ...).
      static java.text.DateFormat newIsoDateFormat()
      ISO 8601 date format (yyyy-MM-dd), example : 2003-04-23
      static java.text.DateFormat newIsoDateTimeFormat()
      ISO 8601 date-time format (yyyy-MM-dd'T'HH:mm:ss), example : 2003-04-26T13:01:02
      static java.text.DateFormat newIsoDateTimeWithMsFormat()
      ISO 8601 date-time format with millisecond (yyyy-MM-dd'T'HH:mm:ss.SSS), example : 2003-04-26T03:01:02.999
      static java.text.DateFormat newTimestampDateFormat()
      Timestamp date-time format with millisecond (yyyy-MM-dd HH:mm:ss.SSS), example : 2003-04-26 03:01:02.999
      static java.util.Date now()  
      static java.util.Date parse​(java.lang.String dateAsString)
      Utility method to parse a Date following ISO_DATE_FORMAT, returns null if the given String is null.
      static java.util.Date parseDatetime​(java.lang.String dateAsString)
      Utility method to parse a Date following ISO_DATE_TIME_FORMAT, returns null if the given String is null.
      static java.util.Date parseDatetimeWithMs​(java.lang.String dateAsString)
      Utility method to parse a Date following ISO_DATE_TIME_FORMAT_WITH_MS, returns null if the given String is null.
      static int secondOf​(java.util.Date date)
      Extracts the second of the given Date.
      private static java.text.DateFormat strictDateFormatForPattern​(java.lang.String pattern)  
      static long timeDifference​(java.util.Date date1, java.util.Date date2)
      Compute the time difference between the two given dates in milliseconds, it always gives a positive result.
      static java.util.Calendar toCalendar​(java.util.Date date)
      Converts the given Date to Calendar, returns null if the given Date is null.
      static java.util.Date tomorrow()  
      static java.util.Date truncateTime​(java.util.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.
      static int yearOf​(java.util.Date date)
      Extracts the year of the given Date.
      static java.util.Date yesterday()  
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Field Detail

      • ISO_DATE_FORMAT

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

        private static final java.text.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 java.text.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 java.text.DateFormat newIsoDateFormat()
        ISO 8601 date format (yyyy-MM-dd), example : 2003-04-23
      • newIsoDateTimeFormat

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

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

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

        private static java.text.DateFormat strictDateFormatForPattern​(java.lang.String pattern)
      • formatAsDatetime

        public static java.lang.String formatAsDatetime​(java.util.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 java.lang.String formatAsDatetimeWithMs​(java.util.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 java.lang.String formatAsDatetime​(java.util.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 java.util.Date parse​(java.lang.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:
        java.lang.RuntimeException - encapsulating ParseException if the string can't be parsed as a Date
      • parseDatetime

        public static java.util.Date parseDatetime​(java.lang.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:
        java.lang.RuntimeException - encapsulating ParseException if the string can't be parsed as a Date
      • parseDatetimeWithMs

        public static java.util.Date parseDatetimeWithMs​(java.lang.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:
        java.lang.RuntimeException - encapsulating ParseException if the string can't be parsed as a Date
      • toCalendar

        public static java.util.Calendar toCalendar​(java.util.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​(java.util.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:
        java.lang.NullPointerException - if given Date is null
      • monthOf

        public static int monthOf​(java.util.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:
        java.lang.NullPointerException - if given Date is null
      • dayOfMonthOf

        public static int dayOfMonthOf​(java.util.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:
        java.lang.NullPointerException - if given Date is null
      • dayOfWeekOf

        public static int dayOfWeekOf​(java.util.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:
        java.lang.NullPointerException - if given Date is null
      • hourOfDayOf

        public static int hourOfDayOf​(java.util.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:
        java.lang.NullPointerException - if given Date is null
      • minuteOf

        public static int minuteOf​(java.util.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:
        java.lang.NullPointerException - if given Date is null
      • secondOf

        public static int secondOf​(java.util.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:
        java.lang.NullPointerException - if given Date is null
      • millisecondOf

        public static int millisecondOf​(java.util.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:
        java.lang.NullPointerException - if given Date is null
      • timeDifference

        public static long timeDifference​(java.util.Date date1,
                                          java.util.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:
        java.lang.IllegalArgumentException - if one a the given Date is null.
      • truncateTime

        public static java.util.Date truncateTime​(java.util.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 java.util.Date now()
      • yesterday

        public static java.util.Date yesterday()
      • tomorrow

        public static java.util.Date tomorrow()
      • formatTimeDifference

        public static java.lang.String formatTimeDifference​(java.util.Date date1,
                                                            java.util.Date date2)
        Utility method to display a human readable time difference.
        Parameters:
        date1 -
        date2 -
        Returns:
        a human readable time difference.