public final class CachedDateFormat extends DateFormat
DateFormat.Field
Modifier and Type | Field and Description |
---|---|
private StringBuffer |
cache
Cache of previous conversion.
|
private static String |
DIGITS
Supported digit set.
|
private int |
expiration
Maximum validity period for the cache.
|
private DateFormat |
formatter
Wrapped formatter.
|
private static int |
MAGIC1
First magic number used to detect the millisecond position.
|
private static int |
MAGIC2
Second magic number used to detect the millisecond position.
|
private static String |
MAGICSTRING1
Expected representation of first magic number.
|
private static String |
MAGICSTRING2
Expected representation of second magic number.
|
private int |
millisecondStart
Index of initial digit of millisecond pattern or
UNRECOGNIZED_MILLISECONDS or NO_MILLISECONDS.
|
static int |
NO_MILLISECONDS
Constant used to represent that there was no change
observed when changing the millisecond count.
|
private long |
previousTime
Date requested in previous conversion.
|
private static long |
serialVersionUID
Serialization version.
|
private long |
slotBegin
Integral second preceding the previous convered Date.
|
private Date |
tmpDate
Scratch date object used to minimize date object creation.
|
static int |
UNRECOGNIZED_MILLISECONDS
Constant used to represent that there was an
observed change, but was an expected change.
|
private static String |
ZERO_STRING
Expected representation of 0 milliseconds.
|
AM_PM_FIELD, calendar, DATE_FIELD, DAY_OF_WEEK_FIELD, DAY_OF_WEEK_IN_MONTH_FIELD, DAY_OF_YEAR_FIELD, DEFAULT, ERA_FIELD, FULL, HOUR_OF_DAY0_FIELD, HOUR_OF_DAY1_FIELD, HOUR0_FIELD, HOUR1_FIELD, LONG, MEDIUM, MILLISECOND_FIELD, MINUTE_FIELD, MONTH_FIELD, numberFormat, SECOND_FIELD, SHORT, TIMEZONE_FIELD, WEEK_OF_MONTH_FIELD, WEEK_OF_YEAR_FIELD, YEAR_FIELD
Constructor and Description |
---|
CachedDateFormat(DateFormat dateFormat,
int expiration)
Creates a new CachedDateFormat object.
|
Modifier and Type | Method and Description |
---|---|
static int |
findMillisecondStart(long time,
String formatted,
DateFormat formatter)
Finds start of millisecond field in formatted time.
|
StringBuffer |
format(Date date,
StringBuffer sbuf,
FieldPosition fieldPosition)
Formats a Date into a date/time string.
|
StringBuffer |
format(long now,
StringBuffer buf)
Formats a millisecond count into a date/time string.
|
static int |
getMaximumCacheValidity(String pattern)
Gets maximum cache validity for the specified SimpleDateTime
conversion pattern.
|
NumberFormat |
getNumberFormat()
Gets number formatter.
|
private static void |
millisecondFormat(int millis,
StringBuffer buf,
int offset)
Formats a count of milliseconds (0-999) into a numeric representation.
|
Date |
parse(String s,
ParsePosition pos)
This method is delegated to the formatter which most
likely returns null.
|
void |
setTimeZone(TimeZone timeZone)
Set timezone.
|
clone, equals, format, format, getAvailableLocales, getCalendar, getDateInstance, getDateInstance, getDateInstance, getDateTimeInstance, getDateTimeInstance, getDateTimeInstance, getInstance, getTimeInstance, getTimeInstance, getTimeInstance, getTimeZone, hashCode, isLenient, parse, parseObject, setCalendar, setLenient, setNumberFormat
format, formatToCharacterIterator, parseObject
private static final long serialVersionUID
public static final int NO_MILLISECONDS
private static final String DIGITS
public static final int UNRECOGNIZED_MILLISECONDS
private static final int MAGIC1
private static final String MAGICSTRING1
private static final int MAGIC2
private static final String MAGICSTRING2
private static final String ZERO_STRING
private final DateFormat formatter
private int millisecondStart
private long slotBegin
private StringBuffer cache
private final int expiration
private long previousTime
public CachedDateFormat(DateFormat dateFormat, int expiration)
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.public static int findMillisecondStart(long time, String formatted, DateFormat formatter)
time
- long time, must be integral number of secondsformatted
- String corresponding formatted stringformatter
- DateFormat date formatpublic StringBuffer format(Date date, StringBuffer sbuf, FieldPosition fieldPosition)
format
in class DateFormat
date
- the date to format.sbuf
- the string buffer to write to.fieldPosition
- remains untouched.public StringBuffer format(long now, StringBuffer buf)
now
- Number of milliseconds after midnight 1 Jan 1970 GMT.buf
- the string buffer to write to.private static void millisecondFormat(int millis, StringBuffer buf, int offset)
millis
- Millisecond coun between 0 and 999.buf
- String buffer, may not be null.offset
- Starting position in buffer, the length of the
buffer must be at least offset + 3.public void setTimeZone(TimeZone timeZone)
setTimeZone
in class DateFormat
timeZone
- TimeZone new timezonepublic Date parse(String s, ParsePosition pos)
parse
in class DateFormat
s
- string representation of date.pos
- field position, unused.public NumberFormat getNumberFormat()
getNumberFormat
in class DateFormat
public static int getMaximumCacheValidity(String pattern)
pattern
- conversion pattern, may not be null.WebARTS Library Licensed Under the GNU - General Public License. Other Libraries licensed under their respective Open Source Licenses