Package org.apache.lucene.document
Class DateTools
java.lang.Object
org.apache.lucene.document.DateTools
Provides support for converting dates to strings and vice-versa.
The strings are structured so that lexicographic sorting orders
them by date, which makes them suitable for use as field values
and search terms.
This class also helps you to limit the resolution of your dates. Do not
save dates with a finer resolution than you really need, as then
TermRangeQuery
and PrefixQuery
will require more memory and become slower.
Another approach is NumericUtils
, which provides
a sortable binary representation (prefix encoded) of numeric values, which
date/time are.
For indexing a Date
or Calendar
, just get the unix timestamp as
long
using Date.getTime()
or Calendar.getTimeInMillis()
and
index this as a numeric value with LongField
and use NumericRangeQuery
to query it.
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic enum
Specifies the time granularity. -
Method Summary
Modifier and TypeMethodDescriptionstatic String
dateToString
(Date date, DateTools.Resolution resolution) Converts a Date to a string suitable for indexing.static long
round
(long time, DateTools.Resolution resolution) Limit a date's resolution.static Date
round
(Date date, DateTools.Resolution resolution) Limit a date's resolution.static Date
stringToDate
(String dateString) Converts a string produced bytimeToString
ordateToString
back to a time, represented as a Date object.static long
stringToTime
(String dateString) Converts a string produced bytimeToString
ordateToString
back to a time, represented as the number of milliseconds since January 1, 1970, 00:00:00 GMT.static String
timeToString
(long time, DateTools.Resolution resolution) Converts a millisecond time to a string suitable for indexing.
-
Method Details
-
dateToString
Converts a Date to a string suitable for indexing.- Parameters:
date
- the date to be convertedresolution
- the desired resolution, seeround(Date, DateTools.Resolution)
- Returns:
- a string in format
yyyyMMddHHmmssSSS
or shorter, depending onresolution
; using GMT as timezone
-
timeToString
Converts a millisecond time to a string suitable for indexing.- Parameters:
time
- the date expressed as milliseconds since January 1, 1970, 00:00:00 GMTresolution
- the desired resolution, seeround(long, DateTools.Resolution)
- Returns:
- a string in format
yyyyMMddHHmmssSSS
or shorter, depending onresolution
; using GMT as timezone
-
stringToTime
Converts a string produced bytimeToString
ordateToString
back to a time, represented as the number of milliseconds since January 1, 1970, 00:00:00 GMT.- Parameters:
dateString
- the date string to be converted- Returns:
- the number of milliseconds since January 1, 1970, 00:00:00 GMT
- Throws:
ParseException
- ifdateString
is not in the expected format
-
stringToDate
Converts a string produced bytimeToString
ordateToString
back to a time, represented as a Date object.- Parameters:
dateString
- the date string to be converted- Returns:
- the parsed time as a Date object
- Throws:
ParseException
- ifdateString
is not in the expected format
-
round
Limit a date's resolution. For example, the date2004-09-21 13:50:11
will be changed to2004-09-01 00:00:00
when usingResolution.MONTH
.- Parameters:
resolution
- The desired resolution of the date to be returned- Returns:
- the date with all values more precise than
resolution
set to 0 or 1
-
round
Limit a date's resolution. For example, the date1095767411000
(which represents 2004-09-21 13:50:11) will be changed to1093989600000
(2004-09-01 00:00:00) when usingResolution.MONTH
.- Parameters:
resolution
- The desired resolution of the date to be returned- Returns:
- the date with all values more precise than
resolution
set to 0 or 1, expressed as milliseconds since January 1, 1970, 00:00:00 GMT
-