public class

DateTimeParserBucket

extends Object
java.lang.Object
   ↳ org.joda.time.format.DateTimeParserBucket

Class Overview

DateTimeParserBucket is an advanced class, intended mainly for parser implementations. It can also be used during normal parsing operations to capture more information about the parse.

This class allows fields to be saved in any order, but be physically set in a consistent order. This is useful for parsing against formats that allow field values to contradict each other.

Field values are applied in an order where the "larger" fields are set first, making their value less likely to stick. A field is larger than another when it's range duration is longer. If both ranges are the same, then the larger field has the longer duration. If it cannot be determined which field is larger, then the fields are set in the order they were saved.

For example, these fields were saved in this order: dayOfWeek, monthOfYear, dayOfMonth, dayOfYear. When computeMillis is called, the fields are set in this order: monthOfYear, dayOfYear, dayOfMonth, dayOfWeek.

DateTimeParserBucket is mutable and not thread-safe.

Summary

Public Constructors
DateTimeParserBucket(long instantLocal, Chronology chrono, Locale locale)
Constucts a bucket.
DateTimeParserBucket(long instantLocal, Chronology chrono, Locale locale, Integer pivotYear)
Constucts a bucket, with the option of specifying the pivot year for two-digit year parsing.
Public Methods
long computeMillis(boolean resetFields)
Computes the parsed datetime by setting the saved fields.
long computeMillis(boolean resetFields, String text)
Computes the parsed datetime by setting the saved fields.
long computeMillis()
Computes the parsed datetime by setting the saved fields.
Chronology getChronology()
Gets the chronology of the bucket, which will be a local (UTC) chronology.
Locale getLocale()
Returns the locale to be used during parsing.
int getOffset()
Returns the time zone offset in milliseconds used by computeMillis, unless getZone doesn't return null.
Integer getPivotYear()
Returns the pivot year used for parsing two-digit years.
DateTimeZone getZone()
Returns the time zone used by computeMillis, or null if an offset is used instead.
boolean restoreState(Object savedState)
Restores the state of this bucket from a previously saved state.
void saveField(DateTimeField field, int value)
Saves a datetime field value.
void saveField(DateTimeFieldType fieldType, String text, Locale locale)
Saves a datetime field text value.
void saveField(DateTimeFieldType fieldType, int value)
Saves a datetime field value.
Object saveState()
Saves the state of this bucket, returning it in an opaque object.
void setOffset(int offset)
Set a time zone offset to be used when computeMillis is called, which overrides the time zone.
void setPivotYear(Integer pivotYear)
Sets the pivot year to use when parsing two digit years.
void setZone(DateTimeZone zone)
Set a time zone to be used when computeMillis is called, which overrides any set time zone offset.
[Expand]
Inherited Methods
From class java.lang.Object

Public Constructors

public DateTimeParserBucket (long instantLocal, Chronology chrono, Locale locale)

Constucts a bucket.

Parameters
instantLocal the initial millis from 1970-01-01T00:00:00, local time
chrono the chronology to use
locale the locale to use

public DateTimeParserBucket (long instantLocal, Chronology chrono, Locale locale, Integer pivotYear)

Constucts a bucket, with the option of specifying the pivot year for two-digit year parsing.

Parameters
instantLocal the initial millis from 1970-01-01T00:00:00, local time
chrono the chronology to use
locale the locale to use
pivotYear the pivot year to use when parsing two-digit years

Public Methods

public long computeMillis (boolean resetFields)

Computes the parsed datetime by setting the saved fields. This method is idempotent, but it is not thread-safe.

Parameters
resetFields false by default, but when true, unsaved field values are cleared
Returns
  • milliseconds since 1970-01-01T00:00:00Z
Throws
IllegalArgumentException if any field is out of range

public long computeMillis (boolean resetFields, String text)

Computes the parsed datetime by setting the saved fields. This method is idempotent, but it is not thread-safe.

Parameters
resetFields false by default, but when true, unsaved field values are cleared
text optional text being parsed, to be included in any error message
Returns
  • milliseconds since 1970-01-01T00:00:00Z
Throws
IllegalArgumentException if any field is out of range

public long computeMillis ()

Computes the parsed datetime by setting the saved fields. This method is idempotent, but it is not thread-safe.

Returns
  • milliseconds since 1970-01-01T00:00:00Z
Throws
IllegalArgumentException if any field is out of range

public Chronology getChronology ()

Gets the chronology of the bucket, which will be a local (UTC) chronology.

public Locale getLocale ()

Returns the locale to be used during parsing.

Returns
  • the locale to use

public int getOffset ()

Returns the time zone offset in milliseconds used by computeMillis, unless getZone doesn't return null.

public Integer getPivotYear ()

Returns the pivot year used for parsing two-digit years.

If null is returned, this indicates default behaviour

Returns
  • Integer value of the pivot year, null if not set

public DateTimeZone getZone ()

Returns the time zone used by computeMillis, or null if an offset is used instead.

public boolean restoreState (Object savedState)

Restores the state of this bucket from a previously saved state. The state object passed into this method is not consumed, and it can be used later to restore to that state again.

Parameters
savedState opaque saved state, returned from saveState
Returns
  • true state object is valid and state restored

public void saveField (DateTimeField field, int value)

Saves a datetime field value.

Parameters
field the field, whose chronology must match that of this bucket
value the value

public void saveField (DateTimeFieldType fieldType, String text, Locale locale)

Saves a datetime field text value.

Parameters
fieldType the field type
text the text value
locale the locale to use

public void saveField (DateTimeFieldType fieldType, int value)

Saves a datetime field value.

Parameters
fieldType the field type
value the value

public Object saveState ()

Saves the state of this bucket, returning it in an opaque object. Call restoreState to undo any changes that were made since the state was saved. Calls to saveState may be nested.

Returns
  • opaque saved state, which may be passed to restoreState

public void setOffset (int offset)

Set a time zone offset to be used when computeMillis is called, which overrides the time zone.

public void setPivotYear (Integer pivotYear)

Sets the pivot year to use when parsing two digit years.

If the value is set to null, this will indicate that default behaviour should be used.

Parameters
pivotYear the pivot year to use

public void setZone (DateTimeZone zone)

Set a time zone to be used when computeMillis is called, which overrides any set time zone offset.

Parameters
zone the date time zone to operate in, or null if UTC