|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object org.apache.solr.util.DateMathParser
public class DateMathParser
A Simple Utility class for parsing "math" like strings relating to Dates.
The basic syntax support addition, subtraction and rounding at various levels of granularity (or "units"). Commands can be chained together and are parsed from left to right. '+' and '-' denote addition and subtraction, while '/' denotes "round". Round requires only a unit, while addition/subtraction require an integer value and a unit. Command strings must not include white space, but the "No-Op" command (empty string) is allowed....
/HOUR ... Round to the start of the current hour /DAY ... Round to the start of the current day +2YEARS ... Exactly two years in the future from now -1DAY ... Exactly 1 day prior to now /DAY+6MONTHS+3DAYS ... 6 months and 3 days in the future from the start of the current day +6MONTHS+3DAYS/DAY ... 6 months and 3 days in the future from now, rounded down to nearest day
All commands are relative to a "now" which is fixed in an instance of
DateMathParser such that
p.parseMath("+0MILLISECOND").equals(p.parseMath("+0MILLISECOND"))
no matter how many wall clock milliseconds elapse between the two
distinct calls to parse (Assuming no other thread calls
"setNow
" in the interim)
Multiple aliases exist for the various units of time (ie:
MINUTE
and MINUTES
; MILLI
,
MILLIS
, MILLISECOND
, and
MILLISECONDS
.) The complete list can be found by
inspecting the keySet of CALENDAR_UNITS
.
Field Summary | |
---|---|
static Map<String,Integer> |
CALENDAR_UNITS
A mapping from (uppercased) String labels idenyifying time units, to the corresponding Calendar constant used to set/add/roll that unit of measurement. |
static Locale |
DEFAULT_MATH_LOCALE
Default Locale for DateMath rounding (Locale.US) |
static TimeZone |
DEFAULT_MATH_TZ
Default TimeZone for DateMath rounding (UTC) |
static TimeZone |
UTC
|
Constructor Summary | |
---|---|
DateMathParser()
Default constructor that assumes UTC should be used for rounding unless otherwise specified in the SolrRequestInfo |
|
DateMathParser(TimeZone tz,
Locale l)
|
Method Summary | |
---|---|
static void |
add(Calendar c,
int val,
String unit)
Modifies the specified Calendar by "adding" the specified value of units |
Date |
getNow()
Returns a cloned of this instance's concept of "now". |
Date |
parseMath(String math)
Parses a string of commands relative "now" are returns the resulting Date. |
static void |
round(Calendar c,
String unit)
Modifies the specified Calendar by "rounding" down to the specified unit |
void |
setNow(Date n)
Defines this instance's concept of "now". |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Field Detail |
---|
public static TimeZone UTC
public static final TimeZone DEFAULT_MATH_TZ
public static final Locale DEFAULT_MATH_LOCALE
public static final Map<String,Integer> CALENDAR_UNITS
A single logical unit of time might be represented by multiple labels
for convenience (ie: DATE==DAY
,
MILLI==MILLISECOND
)
Calendar
Constructor Detail |
---|
public DateMathParser()
DEFAULT_MATH_TZ
,
DEFAULT_MATH_LOCALE
public DateMathParser(TimeZone tz, Locale l)
tz
- The TimeZone used for rounding (to determine when hours/days begin). If null, then this method defaults to the value dicated by the SolrRequestInfo if it
exists -- otherwise it uses UTC.l
- The Locale used for rounding (to determine when weeks begin). If null, then this method defaults to en_US.DEFAULT_MATH_TZ
,
DEFAULT_MATH_LOCALE
,
Calendar.getInstance(TimeZone,Locale)
,
SolrRequestInfo.getClientTimeZone()
Method Detail |
---|
public static void add(Calendar c, int val, String unit)
IllegalArgumentException
- if unit isn't recognized.CALENDAR_UNITS
public static void round(Calendar c, String unit)
IllegalArgumentException
- if unit isn't recognized.CALENDAR_UNITS
public void setNow(Date n)
getNow()
public Date getNow()
setNow(java.util.Date)
,
SolrRequestInfo.getNOW()
public Date parseMath(String math) throws ParseException
ParseException
- positions in ParseExceptions are token positions, not character positions.
|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |