Class CachedDateFormat

java.lang.Object
java.text.Format
java.text.DateFormat
org.apache.log4j.pattern.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:
  • Field Details

    • 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:
    • 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:
  • Constructor Details

    • 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 Details

    • 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.
    • getNumberFormat

      public NumberFormat getNumberFormat()
      Gets number formatter.
      Overrides:
      getNumberFormat in class DateFormat
      Returns:
      NumberFormat number formatter
    • 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.