public abstract class

BaseSingleFieldPeriod

extends Object
implements Serializable Comparable<T> ReadablePeriod
java.lang.Object
   ↳ org.joda.time.base.BaseSingleFieldPeriod
Known Direct Subclasses

Class Overview

BaseSingleFieldPeriod is an abstract implementation of ReadablePeriod that manages a single duration field, such as days or minutes.

This class should generally not be used directly by API users. The ReadablePeriod interface should be used when different kinds of period objects are to be referenced.

BaseSingleFieldPeriod subclasses may be mutable and not thread-safe.

Summary

Protected Constructors
BaseSingleFieldPeriod(int period)
Creates a new instance representing the specified period.
Public Methods
int compareTo(Object other)
Compares this period to another object of the same class.
boolean equals(Object period)
Compares this object with the specified object for equality based on the value of each field.
int get(DurationFieldType type)
Gets the value of a duration field represented by this period.
DurationFieldType getFieldType(int index)
Gets the field type at the specified index.
abstract DurationFieldType getFieldType()
Gets the single duration field type.
abstract PeriodType getPeriodType()
Gets the period type which matches the duration field type.
int getValue(int index)
Gets the value at the specified index.
int hashCode()
Gets a hash code for the period as defined by ReadablePeriod.
boolean isSupported(DurationFieldType type)
Checks whether the duration field specified is supported by this period.
int size()
Gets the number of fields that this period supports, which is one.
MutablePeriod toMutablePeriod()
Get this object as a MutablePeriod.
Period toPeriod()
Get this period as an immutable Period object.
Protected Methods
static int between(ReadableInstant start, ReadableInstant end, DurationFieldType field)
Calculates the number of whole units between the two specified datetimes.
static int between(ReadablePartial start, ReadablePartial end, ReadablePeriod zeroInstance)
Calculates the number of whole units between the two specified partial datetimes.
int getValue()
Gets the amount of this period.
void setValue(int value)
Sets the amount of this period.
static int standardPeriodIn(ReadablePeriod period, long millisPerUnit)
Creates a new instance representing the number of complete standard length units in the specified period.
[Expand]
Inherited Methods
From class java.lang.Object
From interface java.lang.Comparable
From interface org.joda.time.ReadablePeriod

Protected Constructors

protected BaseSingleFieldPeriod (int period)

Creates a new instance representing the specified period.

Parameters
period the period to represent

Public Methods

public int compareTo (Object other)

Compares this period to another object of the same class.

Parameters
other the other period, must not be null
Returns
  • zero if equal, positive if greater, negative if less
Throws
NullPointerException if the other period is null
ClassCastException if the other period is of a different type

public boolean equals (Object period)

Compares this object with the specified object for equality based on the value of each field. All ReadablePeriod instances are accepted, but only those with a matching PeriodType can return true.

Parameters
period a readable period to check against
Returns
  • true if all the field values are equal, false if not or the period is null or of an incorrect type

public int get (DurationFieldType type)

Gets the value of a duration field represented by this period.

If the field type specified does not match the type used by this class then zero is returned.

Parameters
type the field type to query, null returns zero
Returns
  • the value of that field, zero if field not supported

public DurationFieldType getFieldType (int index)

Gets the field type at the specified index.

The only index supported by this period is zero which returns the field type of this class.

Parameters
index the index to retrieve, which must be zero
Returns
  • the field at the specified index
Throws
IndexOutOfBoundsException if the index is invalid

public abstract DurationFieldType getFieldType ()

Gets the single duration field type.

Returns
  • the duration field type, not null

public abstract PeriodType getPeriodType ()

Gets the period type which matches the duration field type.

Returns
  • the period type, not null

public int getValue (int index)

Gets the value at the specified index.

The only index supported by this period is zero.

Parameters
index the index to retrieve, which must be zero
Returns
  • the value of the field at the specified index
Throws
IndexOutOfBoundsException if the index is invalid

public int hashCode ()

Gets a hash code for the period as defined by ReadablePeriod.

Returns
  • a hash code

public boolean isSupported (DurationFieldType type)

Checks whether the duration field specified is supported by this period.

Parameters
type the type to check, may be null which returns false
Returns
  • true if the field is supported

public int size ()

Gets the number of fields that this period supports, which is one.

Returns
  • the number of fields supported, which is one

public MutablePeriod toMutablePeriod ()

Get this object as a MutablePeriod.

This will always return a new MutablePeriod with the same fields. The period will use PeriodType.standard().

Returns
  • a MutablePeriod using the same field set and values

public Period toPeriod ()

Get this period as an immutable Period object. The period will use PeriodType.standard().

Returns
  • a Period representing the same number of days

Protected Methods

protected static int between (ReadableInstant start, ReadableInstant end, DurationFieldType field)

Calculates the number of whole units between the two specified datetimes.

Parameters
start the start instant, validated to not be null
end the end instant, validated to not be null
field the field type to use, must not be null
Returns
  • the period
Throws
IllegalArgumentException if the instants are null or invalid

protected static int between (ReadablePartial start, ReadablePartial end, ReadablePeriod zeroInstance)

Calculates the number of whole units between the two specified partial datetimes.

The two partials must contain the same fields, for example you can specify two LocalDate objects.

Parameters
start the start partial date, validated to not be null
end the end partial date, validated to not be null
zeroInstance the zero instance constant, must not be null
Returns
  • the period
Throws
IllegalArgumentException if the partials are null or invalid

protected int getValue ()

Gets the amount of this period.

Returns
  • the period value

protected void setValue (int value)

Sets the amount of this period. To make a subclass immutable you must declare it final, or block this method.

Parameters
value the period value

protected static int standardPeriodIn (ReadablePeriod period, long millisPerUnit)

Creates a new instance representing the number of complete standard length units in the specified period.

This factory method converts all fields from the period to hours using standardised durations for each field. Only those fields which have a precise duration in the ISO UTC chronology can be converted.

  • One week consists of 7 days.
  • One day consists of 24 hours.
  • One hour consists of 60 minutes.
  • One minute consists of 60 seconds.
  • One second consists of 1000 milliseconds.
Months and Years are imprecise and periods containing these values cannot be converted.

Parameters
period the period to get the number of hours from, must not be null
millisPerUnit the number of milliseconds in one standard unit of this period
Throws
IllegalArgumentException if the period contains imprecise duration values