Package org.joda.time

Class Months

  • All Implemented Interfaces:
    java.io.Serializable, java.lang.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
    See Also:
    Serialized Form
    • Field Detail

      • 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 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:
        java.lang.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:
        java.lang.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:
        java.lang.IllegalArgumentException - if the partials are null or invalid
      • parseMonths

        public static Months parseMonths​(java.lang.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:
        java.lang.IllegalArgumentException - if the string format is invalid
      • 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:
        java.lang.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:
        java.lang.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:
        java.lang.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:
        java.lang.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:
        java.lang.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:
        java.lang.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:
        java.lang.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 java.lang.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 java.lang.Object
        Returns:
        the value as an ISO8601 string