Joda Time API

org.joda.time.chrono
Class OffsetDateTimeField

java.lang.Object
  |
  +--org.joda.time.DateTimeField
        |
        +--org.joda.time.chrono.OffsetDateTimeField
All Implemented Interfaces:
java.io.Serializable

public class OffsetDateTimeField
extends DateTimeField

Generic offset adjusting datetime field.

Since:
1.0
Author:
Brian S O'Neill
See Also:
Serialized Form

Constructor Summary
OffsetDateTimeField(java.lang.String name, DateTimeField field, int offset)
          Constructor
OffsetDateTimeField(java.lang.String name, DateTimeField field, int offset, int minValue, int maxValue)
          Constructor
 
Method Summary
 long add(long millis, int amount)
          Add the specified amount of offset units to the specified time instant.
 long add(long millis, long amount)
          Add the specified amount of offset units to the specified time instant.
 long addWrapped(long millis, int amount)
          Add to the offset component of the specified time instant, wrapping around within that component if necessary.
 int get(long millis)
          Get the amount of offset units from the specified time instant.
 long getDifference(long minuendMillis, long subtrahendMillis)
          Computes the difference between two instants, as measured in the units of this field.
 DateTimeField getField()
          Returns the DateTimeField being wrapped.
 int getMaximumValue()
          Get the maximum value for the field.
 int getMinimumValue()
          Get the minimum value for the field.
 int getOffset()
          Returns the offset added to the field values.
 long getRangeMillis()
          Returns the range of this field, in milliseconds.
 long getUnitMillis()
          Returns the amount of milliseconds per unit value of this field.
 long remainder(long millis)
          Retains only the fractional units of this field.
 long roundCeiling(long millis)
          Round to the highest whole unit of this field.
 long roundFloor(long millis)
          Round to the lowest whole unit of this field.
 long roundHalfFloor(long millis)
          Round to the nearest whole unit of this field.
 long set(long millis, int value)
          Set the specified amount of offset units to the specified time instant.
 
Methods inherited from class org.joda.time.DateTimeField
addLong, getAsShortText, getAsShortText, getAsText, getAsText, getLeapAmount, getMaximumShortTextLength, getMaximumTextLength, getMaximumValue, getMinimumValue, getName, getWrappedValue, getWrappedValue, isLeap, roundHalfCeiling, roundHalfEven, set, set, toString, verifyValueBounds
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

OffsetDateTimeField

public OffsetDateTimeField(java.lang.String name,
                           DateTimeField field,
                           int offset)
Constructor

Parameters:
name - short, descriptive name, like "offsetYear".
field - the field to wrap, like "year()".
offset - offset to add to field values
Throws:
java.lang.IllegalArgumentException - if offset is zero

OffsetDateTimeField

public OffsetDateTimeField(java.lang.String name,
                           DateTimeField field,
                           int offset,
                           int minValue,
                           int maxValue)
Constructor

Parameters:
name - short, descriptive name, like "offsetYear".
field - the field to wrap, like "year()".
offset - offset to add to field values
minValue - minimum allowed value
maxValue - maximum allowed value
Throws:
java.lang.IllegalArgumentException - if offset is zero
Method Detail

get

public int get(long millis)
Get the amount of offset units from the specified time instant.

Specified by:
get in class DateTimeField
Parameters:
millis - the time instant in millis to query.
Returns:
the amount of units extracted from the input.

add

public long add(long millis,
                int amount)
Add the specified amount of offset units to the specified time instant. The amount added may be negative.

Specified by:
add in class DateTimeField
Parameters:
millis - the time instant in millis to update.
amount - the amount of units to add (can be negative).
Returns:
the updated time instant.

add

public long add(long millis,
                long amount)
Add the specified amount of offset units to the specified time instant. The amount added may be negative.

Specified by:
add in class DateTimeField
Parameters:
millis - the time instant in millis to update.
amount - the amount of units to add (can be negative).
Returns:
the updated time instant.
See Also:
DateTimeField.add(long,int)

addWrapped

public long addWrapped(long millis,
                       int amount)
Add to the offset component of the specified time instant, wrapping around within that component if necessary.

Overrides:
addWrapped in class DateTimeField
Parameters:
millis - the time instant in millis to update.
amount - the amount of units to add (can be negative).
Returns:
the updated time instant.

getDifference

public long getDifference(long minuendMillis,
                          long subtrahendMillis)
Description copied from class: DateTimeField
Computes the difference between two instants, as measured in the units of this field. Any fractional units are dropped from the result. Calling getDifference reverses the effect of calling add. In the following code:
 long millis = ...
 int v = ...
 long age = getDifference(add(millis, v), millis);
 
The value 'age' is the same as the value 'v'.

The default implementation performs a guess-and-check algorithm using the getUnitMillis and add methods. Subclasses are encouraged to provide a more efficient implementation.

Overrides:
getDifference in class DateTimeField
Parameters:
minuendMillis - the milliseconds from 1970-01-01T00:00:00Z to subtract from
subtrahendMillis - the milliseconds from 1970-01-01T00:00:00Z to subtract off the minuend
Returns:
the difference in the units of this field

set

public long set(long millis,
                int value)
Set the specified amount of offset units to the specified time instant.

Specified by:
set in class DateTimeField
Parameters:
millis - the time instant in millis to update.
value - value of units to set.
Returns:
the updated time instant.
Throws:
java.lang.IllegalArgumentException - if value is too large or too small.

getUnitMillis

public long getUnitMillis()
Description copied from class: DateTimeField
Returns the amount of milliseconds per unit value of this field. For example, if this field represents "hour of day", then the unit is the amount of milliseconds per one hour.

For fields with a variable unit size, this method returns a suitable average value.

Specified by:
getUnitMillis in class DateTimeField
Returns:
the unit size of this field, in milliseconds

getRangeMillis

public long getRangeMillis()
Description copied from class: DateTimeField
Returns the range of this field, in milliseconds. For example, if this field represents "hour of day", then the range is the amount of milliseconds per one day.

For fields with a variable range, this method returns a suitable average value. If the range is too large to fit in a long, Long.MAX_VALUE is returned.

Specified by:
getRangeMillis in class DateTimeField
Returns:
the range of this field, in milliseconds

getMinimumValue

public int getMinimumValue()
Get the minimum value for the field.

Specified by:
getMinimumValue in class DateTimeField
Returns:
the minimum value

getMaximumValue

public int getMaximumValue()
Get the maximum value for the field.

Specified by:
getMaximumValue in class DateTimeField
Returns:
the maximum value

roundFloor

public long roundFloor(long millis)
Description copied from class: DateTimeField
Round to the lowest whole unit of this field. After rounding, the value of this field and all fields of a higher magnitude are retained. The fractional millis that cannot be expressed in whole increments of this field are set to minimum.

For example, a datetime of 2002-11-02T23:34:56.789, rounded to the lowest whole hour is 2002-11-02T23:00:00.000.

Specified by:
roundFloor in class DateTimeField
Parameters:
millis - the milliseconds from 1970-01-01T00:00:00Z to round
Returns:
rounded milliseconds

roundCeiling

public long roundCeiling(long millis)
Description copied from class: DateTimeField
Round to the highest whole unit of this field. The value of this field and all fields of a higher magnitude may be incremented in order to achieve this result. The fractional millis that cannot be expressed in whole increments of this field are set to minimum.

For example, a datetime of 2002-11-02T23:34:56.789, rounded to the highest whole hour is 2002-11-03T00:00:00.000.

The default implementation calls roundFloor, and if the millis is modified as a result, adds one field unit. Subclasses are encouraged to provide a more efficient implementation.

Overrides:
roundCeiling in class DateTimeField
Parameters:
millis - the milliseconds from 1970-01-01T00:00:00Z to round
Returns:
rounded milliseconds

roundHalfFloor

public long roundHalfFloor(long millis)
Description copied from class: DateTimeField
Round to the nearest whole unit of this field. If the given millisecond value is closer to the floor or is exactly halfway, this function behaves like roundFloor. If the millisecond value is closer to the ceiling, this function behaves like roundCeiling.

Overrides:
roundHalfFloor in class DateTimeField
Parameters:
millis - the milliseconds from 1970-01-01T00:00:00Z to round
Returns:
rounded milliseconds

remainder

public long remainder(long millis)
Description copied from class: DateTimeField
Retains only the fractional units of this field. This field value and all fields of higher magnitude are reset. In other words, calling remainder retains the part of the instant that roundFloor dropped.

For example, a datetime of 2002-11-02T23:34:56.789, the remainder by hour is 1970-01-01T00:34:56.789.

The default implementation computes millis - roundFloor(millis). Subclasses are encouraged to provide a more efficient implementation.

Overrides:
remainder in class DateTimeField
Parameters:
millis - the milliseconds from 1970-01-01T00:00:00Z to get the remainder
Returns:
remainder milliseconds

getField

public DateTimeField getField()
Returns the DateTimeField being wrapped.

Returns:
field

getOffset

public int getOffset()
Returns the offset added to the field values.

Returns:
the offset

Joda Time API

Copyright © 2001-2003 Stephen Colebourne. All Rights Reserved.