Class FastDateParser
- All Implemented Interfaces:
Serializable
,DateParser
SimpleDateFormat
.
To obtain a proxy to a FastDateParser, use FastDateFormat.getInstance(String, TimeZone, Locale)
or another variation of the factory methods of
FastDateFormat
.
Since FastDateParser is thread safe, you can use a static member instance:
private static final DateParser DATE_PARSER = FastDateFormat.getInstance("yyyy-MM-dd");
This class can be used as a direct replacement for SimpleDateFormat
in most parsing situations. This class is especially useful in multi-threaded
server environments. SimpleDateFormat
is not thread-safe in any JDK version, nor will it be as Sun has closed the
bug/RFE.
Only parsing is supported by this class, but all patterns are compatible with SimpleDateFormat.
The class operates in lenient mode, so for example a time of 90 minutes is treated as 1 hour 30 minutes.
Timing tests indicate this class is as about as fast as SimpleDateFormat in single thread applications and about 25% faster in multi-thread applications.
- Since:
- 3.2
- See Also:
-
Constructor Summary
ModifierConstructorDescriptionprotected
FastDateParser
(String pattern, TimeZone timeZone, Locale locale) Constructs a new FastDateParser.protected
FastDateParser
(String pattern, TimeZone timeZone, Locale locale, Date centuryStart) Constructs a new FastDateParser. -
Method Summary
Modifier and TypeMethodDescriptionboolean
Compares another object for equality with this object.Gets the locale used by this parser.Gets the pattern used by this parser.Gets the time zone used by this parser.int
hashCode()
Returns a hash code compatible with equals.Equivalent to DateFormat.parse(String).parse
(String source, ParsePosition pos) This implementation updates the ParsePosition if the parse succeeds.boolean
parse
(String source, ParsePosition pos, Calendar calendar) Parses a formatted date string according to the format.parseObject
(String source) Parses text from a string to produce a Date.parseObject
(String source, ParsePosition pos) Parses a date/time string according to the given parse position.toString()
Gets a string version of this formatter.Converts all state of this instance to a String handy for debugging.
-
Constructor Details
-
FastDateParser
Constructs a new FastDateParser. UseFastDateFormat.getInstance(String, TimeZone, Locale)
or another variation of the factory methods ofFastDateFormat
to get a cached FastDateParser instance.- Parameters:
pattern
- non-nullSimpleDateFormat
compatible patterntimeZone
- non-null time zone to uselocale
- non-null locale
-
FastDateParser
Constructs a new FastDateParser.- Parameters:
pattern
- non-nullSimpleDateFormat
compatible patterntimeZone
- non-null time zone to uselocale
- locale, null maps to the default Locale.centuryStart
- The start of the century for 2 digit year parsing- Since:
- 3.5
-
-
Method Details
-
equals
Compares another object for equality with this object. -
getLocale
Description copied from interface:DateParser
Gets the locale used by this parser.- Specified by:
getLocale
in interfaceDateParser
- Returns:
- the locale
-
getPattern
Description copied from interface:DateParser
Gets the pattern used by this parser.- Specified by:
getPattern
in interfaceDateParser
- Returns:
- the pattern,
SimpleDateFormat
compatible
-
getTimeZone
Description copied from interface:DateParser
Gets the time zone used by this parser.The default
TimeZone
used to create aDate
when theTimeZone
is not specified by the format pattern.- Specified by:
getTimeZone
in interfaceDateParser
- Returns:
- the time zone
-
hashCode
Returns a hash code compatible with equals. -
parse
Description copied from interface:DateParser
Equivalent to DateFormat.parse(String). SeeDateFormat.parse(String)
for more information.- Specified by:
parse
in interfaceDateParser
- Parameters:
source
- AString
whose beginning should be parsed.- Returns:
- A
Date
parsed from the string - Throws:
ParseException
- if the beginning of the specified string cannot be parsed.
-
parse
This implementation updates the ParsePosition if the parse succeeds. However, it sets the error index to the position before the failed field unlike the methodSimpleDateFormat.parse(String, ParsePosition)
which sets the error index to after the failed field.To determine if the parse has succeeded, the caller must check if the current parse position given by
ParsePosition.getIndex()
has been updated. If the input buffer has been fully parsed, then the index will point to just after the end of the input buffer.- Specified by:
parse
in interfaceDateParser
- Parameters:
source
- AString
, part of which should be parsed.pos
- AParsePosition
object with index and error index information as described above.- Returns:
- A
Date
parsed from the string. In case of error, returns null. - See Also:
-
parse
Parses a formatted date string according to the format. Updates the Calendar with parsed fields. Upon success, the ParsePosition index is updated to indicate how much of the source text was consumed. Not all source text needs to be consumed. Upon parse failure, ParsePosition error index is updated to the offset of the source text which does not match the supplied format.- Specified by:
parse
in interfaceDateParser
- Parameters:
source
- The text to parse.pos
- On input, the position in the source to start parsing, on output, updated position.calendar
- The calendar into which to set parsed fields.- Returns:
- true, if source has been parsed (pos parsePosition is updated); otherwise false (and pos errorIndex is updated)
- Throws:
IllegalArgumentException
- when Calendar has been set to be not lenient, and a parsed field is out of range.
-
parseObject
Description copied from interface:DateParser
Parses text from a string to produce a Date.- Specified by:
parseObject
in interfaceDateParser
- Parameters:
source
- AString
whose beginning should be parsed.- Returns:
- a
Date
object - Throws:
ParseException
- if the beginning of the specified string cannot be parsed.- See Also:
-
parseObject
Description copied from interface:DateParser
Parses a date/time string according to the given parse position.- Specified by:
parseObject
in interfaceDateParser
- Parameters:
source
- AString
whose beginning should be parsed.pos
- the parse position- Returns:
- a
Date
object - See Also:
-
toString
Gets a string version of this formatter. -
toStringAll
Converts all state of this instance to a String handy for debugging.- Returns:
- a string.
- Since:
- 3.12.0
-