Package org.joda.time

Class Months

All Implemented Interfaces:
Serializable, Comparable<BaseSingleFieldPeriod>, ReadablePeriod

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:
  • Field Details

    • ZERO

      public static final Months ZERO
      Constant representing zero months.
    • ONE

      public static final Months ONE
      Constant representing one month.
    • 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 Details

    • 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 correctly handles any daylight savings time changes that may occur during the interval.

      This method calculates by adding months to the start date until the result is past the end date. As such, a period from the end of a "long" month to the end of a "short" month is counted as a whole month.

      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.

      This method calculates by adding months to the start date until the result is past the end date. As such, a period from the end of a "long" month to the end of a "short" month is counted as a whole month.

      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 correctly 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.

      Specified by:
      toString in interface ReadablePeriod
      Overrides:
      toString in class Object
      Returns:
      the value as an ISO8601 string