Class CachedDateFormat

  • All Implemented Interfaces:
    Serializable, Cloneable

    public final class CachedDateFormat
    extends DateFormat
    CachedDateFormat optimizes the performance of a wrapped DateFormat. The implementation is not thread-safe. If the millisecond pattern is not recognized, the class will only use the cache if the same value is requested.
    See Also:
    Serialized Form
    • Field Detail

      • NO_MILLISECONDS

        public static final int NO_MILLISECONDS
        Constant used to represent that there was no change observed when changing the millisecond count.
        See Also:
        Constant Field Values
      • UNRECOGNIZED_MILLISECONDS

        public static final int UNRECOGNIZED_MILLISECONDS
        Constant used to represent that there was an observed change, but was an expected change.
        See Also:
        Constant Field Values
    • Constructor Detail

      • CachedDateFormat

        public CachedDateFormat​(DateFormat dateFormat,
                                int expiration)
        Creates a new CachedDateFormat object.
        Parameters:
        dateFormat - Date format, may not be null.
        expiration - maximum cached range in milliseconds. If the dateFormat is known to be incompatible with the caching algorithm, use a value of 0 to totally disable caching or 1 to only use cache for duplicate requests.
    • Method Detail

      • findMillisecondStart

        public static int findMillisecondStart​(long time,
                                               String formatted,
                                               DateFormat formatter)
        Finds start of millisecond field in formatted time.
        Parameters:
        time - long time, must be integral number of seconds
        formatted - String corresponding formatted string
        formatter - DateFormat date format
        Returns:
        int position in string of first digit of milliseconds, -1 indicates no millisecond field, -2 indicates unrecognized field (likely RelativeTimeDateFormat)
      • format

        public StringBuffer format​(Date date,
                                   StringBuffer sbuf,
                                   FieldPosition fieldPosition)
        Formats a Date into a date/time string.
        Specified by:
        format in class DateFormat
        Parameters:
        date - the date to format.
        sbuf - the string buffer to write to.
        fieldPosition - remains untouched.
        Returns:
        the formatted time string.
      • format

        public StringBuffer format​(long now,
                                   StringBuffer buf)
        Formats a millisecond count into a date/time string.
        Parameters:
        now - Number of milliseconds after midnight 1 Jan 1970 GMT.
        buf - the string buffer to write to.
        Returns:
        the formatted time string.
      • setTimeZone

        public void setTimeZone​(TimeZone timeZone)
        Set timezone. Setting the timezone using getCalendar().setTimeZone() will likely cause caching to misbehave.
        Overrides:
        setTimeZone in class DateFormat
        Parameters:
        timeZone - TimeZone new timezone
      • parse

        public Date parse​(String s,
                          ParsePosition pos)
        This method is delegated to the formatter which most likely returns null.
        Specified by:
        parse in class DateFormat
        Parameters:
        s - string representation of date.
        pos - field position, unused.
        Returns:
        parsed date, likely null.
      • getMaximumCacheValidity

        public static int getMaximumCacheValidity​(String pattern)
        Gets maximum cache validity for the specified SimpleDateTime conversion pattern.
        Parameters:
        pattern - conversion pattern, may not be null.
        Returns:
        Duration in milliseconds from an integral second that the cache will return consistent results.