Joda Time API

org.joda.time.chrono
Class FractionalDateTimeField

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

public class FractionalDateTimeField
extends DateTimeField

Generic fractional datetime field.

This DateTimeField is useful for extracting a fractional part from the milliseconds. This is very useful for time values.

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

Constructor Summary
FractionalDateTimeField(java.lang.String name, long unitMillis, int range)
          Constructor.
 
Method Summary
 long add(long millis, int amount)
          Add the specified amount of fractional units to the specified time instant.
 long add(long millis, long amount)
          Add the specified amount of fractional units to the specified time instant.
 long addWrapped(long millis, int amount)
          Add to the fractional component of the specified time instant, wrapping around within that component if necessary.
 int get(long millis)
          Get the amount of fractional 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.
 int getMaximumValue()
          Get the maximum value for the field.
 int getMinimumValue()
          Get the minimum value for the field.
 int getRange()
          Returns the range of the field in the field's units.
 long getRangeMillis()
          Returns the range of this field, in milliseconds.
 long getUnitMillis()
          Returns the milliseconds representing one unit of the 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 set(long millis, int value)
          Set the specified amount of fractional 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, roundHalfFloor, set, set, toString, verifyValueBounds
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

FractionalDateTimeField

public FractionalDateTimeField(java.lang.String name,
                               long unitMillis,
                               int range)
Constructor.

Parameters:
name - short, descriptive name, like "secondOfMinute".
unitMillis - milliseconds per unit, such as 1000 for one second
range - range in units, such as 60 seconds per minute
Throws:
java.lang.IllegalArgumentException - if fractional unit is less than one, or if range is less than two.
Method Detail

get

public int get(long millis)
Get the amount of fractional 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 fractional units extracted from the input.

add

public long add(long millis,
                int amount)
Add the specified amount of fractional 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 fractional units to add (can be negative).
Returns:
the updated time instant.

add

public long add(long millis,
                long amount)
Add the specified amount of fractional 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 fractional 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 fractional 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 fractional 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 fractional units to the specified time instant.

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

getUnitMillis

public long getUnitMillis()
Returns the milliseconds representing one unit of the field.

For example, 1000 for one second.

Specified by:
getUnitMillis in class DateTimeField
Returns:
unit millis

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

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

getRange

public int getRange()
Returns the range of the field in the field's units.

For example, 60 for seconds per minute. The field is allowed values from 0 to range - 1.

Returns:
unit range

Joda Time API

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