org.joda.time
Class Months

java.lang.Object
  extended byorg.joda.time.base.BaseSingleFieldPeriod
      extended byorg.joda.time.Months
All Implemented Interfaces:
Comparable, ReadablePeriod, Serializable

public final class Months
extends BaseSingleFieldPeriod

An immutable time period representing a number of months.

Months is an immutable period that can only store months. It does not store years, days or hours for example. As such it is a type-safe way of representing a number of months in an application.

The number of months is set in the constructor, and may be queried using getMonths(). Basic mathematical operations are provided - plus(), minus(), multipliedBy() and dividedBy().

Months is thread-safe and immutable.

Since:
1.4
Author:
Stephen Colebourne
See Also:
Serialized Form

Field Summary
static Months EIGHT
          Constant representing eight months.
static Months ELEVEN
          Constant representing eleven months.
static Months FIVE
          Constant representing five months.
static Months FOUR
          Constant representing four months.
static Months MAX_VALUE
          Constant representing the maximum number of months that can be stored in this object.
static Months MIN_VALUE
          Constant representing the minimum number of months that can be stored in this object.
static Months NINE
          Constant representing nine months.
static Months ONE
          Constant representing one day.
static Months SEVEN
          Constant representing seven months.
static Months SIX
          Constant representing six months.
static Months TEN
          Constant representing ten months.
static Months THREE
          Constant representing three months.
static Months TWELVE
          Constant representing twelve months.
static Months TWO
          Constant representing two months.
static Months ZERO
          Constant representing zero months.
 
Method Summary
 Months dividedBy(int divisor)
          Returns a new instance with the months divided by the specified divisor.
 DurationFieldType getFieldType()
          Gets the duration field type, which is months.
 int getMonths()
          Gets the number of months that this period represents.
 PeriodType getPeriodType()
          Gets the period type, which is months.
 boolean isGreaterThan(Months other)
          Is this months instance greater than the specified number of months.
 boolean isLessThan(Months other)
          Is this months instance less than the specified number of months.
 Months minus(int months)
          Returns a new instance with the specified number of months taken away.
 Months minus(Months months)
          Returns a new instance with the specified number of months taken away.
static Months months(int months)
          Obtains an instance of Months that may be cached.
static Months monthsBetween(ReadableInstant start, ReadableInstant end)
          Creates a Months representing the number of whole months between the two specified datetimes.
static Months monthsBetween(ReadablePartial start, ReadablePartial end)
          Creates a Months representing the number of whole months between the two specified partial datetimes.
static Months monthsIn(ReadableInterval interval)
          Creates a Months representing the number of whole months in the specified interval.
 Months multipliedBy(int scalar)
          Returns a new instance with the months multiplied by the specified scalar.
 Months negated()
          Returns a new instance with the months value negated.
static Months parseMonths(String periodStr)
          Creates a new Months by parsing a string in the ISO8601 format 'PnM'.
 Months plus(int months)
          Returns a new instance with the specified number of months added.
 Months plus(Months months)
          Returns a new instance with the specified number of months added.
 String toString()
          Gets this instance as a String in the ISO8601 duration format.
 
Methods inherited from class org.joda.time.base.BaseSingleFieldPeriod
compareTo, equals, get, getFieldType, getValue, hashCode, isSupported, size, toMutablePeriod, toPeriod
 
Methods inherited from class java.lang.Object
getClass, notify, notifyAll, wait, wait, wait
 

Field Detail

ZERO

public static final Months ZERO
Constant representing zero months.


ONE

public static final Months ONE
Constant representing one day.


TWO

public static final Months TWO
Constant representing two months.


THREE

public static final Months THREE
Constant representing three months.


FOUR

public static final Months FOUR
Constant representing four months.


FIVE

public static final Months FIVE
Constant representing five months.


SIX

public static final Months SIX
Constant representing six months.


SEVEN

public static final Months SEVEN
Constant representing seven months.


EIGHT

public static final Months EIGHT
Constant representing eight months.


NINE

public static final Months NINE
Constant representing nine months.


TEN

public static final Months TEN
Constant representing ten months.


ELEVEN

public static final Months ELEVEN
Constant representing eleven months.


TWELVE

public static final Months TWELVE
Constant representing twelve months.


MAX_VALUE

public static final Months MAX_VALUE
Constant representing the maximum number of months that can be stored in this object.


MIN_VALUE

public static final Months MIN_VALUE
Constant representing the minimum number of months that can be stored in this object.

Method Detail

months

public static Months months(int months)
Obtains an instance of Months that may be cached. Months is immutable, so instances can be cached and shared. This factory method provides access to shared instances.

Parameters:
months - the number of months to obtain an instance for
Returns:
the instance of Months

monthsBetween

public static Months monthsBetween(ReadableInstant start,
                                   ReadableInstant end)
Creates a Months representing the number of whole months between the two specified datetimes. This method corectly handles any daylight savings time changes that may occur during the interval.

Parameters:
start - the start instant, must not be null
end - the end instant, must not be null
Returns:
the period in months
Throws:
IllegalArgumentException - if the instants are null or invalid

monthsBetween

public static Months monthsBetween(ReadablePartial start,
                                   ReadablePartial end)
Creates a Months representing the number of whole months 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, must not be null
end - the end partial date, must not be null
Returns:
the period in months
Throws:
IllegalArgumentException - if the partials are null or invalid

monthsIn

public static Months monthsIn(ReadableInterval interval)
Creates a Months representing the number of whole months in the specified interval. This method corectly handles any daylight savings time changes that may occur during the interval.

Parameters:
interval - the interval to extract months from, null returns zero
Returns:
the period in months
Throws:
IllegalArgumentException - if the partials are null or invalid

parseMonths

public static Months parseMonths(String periodStr)
Creates a new Months by parsing a string in the ISO8601 format 'PnM'.

The parse will accept the full ISO syntax of PnYnMnWnDTnHnMnS however only the months component may be non-zero. If any other component is non-zero, an exception will be thrown.

Parameters:
periodStr - the period string, null returns zero
Returns:
the period in months
Throws:
IllegalArgumentException - if the string format is invalid

getFieldType

public DurationFieldType getFieldType()
Gets the duration field type, which is months.

Specified by:
getFieldType in class BaseSingleFieldPeriod
Returns:
the period type

getPeriodType

public PeriodType getPeriodType()
Gets the period type, which is months.

Specified by:
getPeriodType in interface ReadablePeriod
Specified by:
getPeriodType in class BaseSingleFieldPeriod
Returns:
the period type

getMonths

public int getMonths()
Gets the number of months that this period represents.

Returns:
the number of months in the period

plus

public Months plus(int months)
Returns a new instance with the specified number of months added.

This instance is immutable and unaffected by this method call.

Parameters:
months - the amount of months to add, may be negative
Returns:
the new period plus the specified number of months
Throws:
ArithmeticException - if the result overflows an int

plus

public Months plus(Months months)
Returns a new instance with the specified number of months added.

This instance is immutable and unaffected by this method call.

Parameters:
months - the amount of months to add, may be negative, null means zero
Returns:
the new period plus the specified number of months
Throws:
ArithmeticException - if the result overflows an int

minus

public Months minus(int months)
Returns a new instance with the specified number of months taken away.

This instance is immutable and unaffected by this method call.

Parameters:
months - the amount of months to take away, may be negative
Returns:
the new period minus the specified number of months
Throws:
ArithmeticException - if the result overflows an int

minus

public Months minus(Months months)
Returns a new instance with the specified number of months taken away.

This instance is immutable and unaffected by this method call.

Parameters:
months - the amount of months to take away, may be negative, null means zero
Returns:
the new period minus the specified number of months
Throws:
ArithmeticException - if the result overflows an int

multipliedBy

public Months multipliedBy(int scalar)
Returns a new instance with the months multiplied by the specified scalar.

This instance is immutable and unaffected by this method call.

Parameters:
scalar - the amount to multiply by, may be negative
Returns:
the new period multiplied by the specified scalar
Throws:
ArithmeticException - if the result overflows an int

dividedBy

public Months dividedBy(int divisor)
Returns a new instance with the months divided by the specified divisor. The calculation uses integer division, thus 3 divided by 2 is 1.

This instance is immutable and unaffected by this method call.

Parameters:
divisor - the amount to divide by, may be negative
Returns:
the new period divided by the specified divisor
Throws:
ArithmeticException - if the divisor is zero

negated

public Months negated()
Returns a new instance with the months value negated.

Returns:
the new period with a negated value
Throws:
ArithmeticException - if the result overflows an int

isGreaterThan

public boolean isGreaterThan(Months other)
Is this months instance greater than the specified number of months.

Parameters:
other - the other period, null means zero
Returns:
true if this months instance is greater than the specified one

isLessThan

public boolean isLessThan(Months other)
Is this months instance less than the specified number of months.

Parameters:
other - the other period, null means zero
Returns:
true if this months instance is less than the specified one

toString

public String toString()
Gets this instance as a String in the ISO8601 duration format.

For example, "P4M" represents 4 months.

Returns:
the value as an ISO8601 string


Copyright © 2002-2008 Joda.org. All Rights Reserved.