示例#1
0
 /**
  * Creates a <code>Years</code> representing the number of whole years between the two specified
  * partial datetimes.
  *
  * <p>The two partials must contain the same fields, for example you can specify two <code>
  * LocalDate</code> objects.
  *
  * @param start the start partial date, must not be null
  * @param end the end partial date, must not be null
  * @return the period in years
  * @throws IllegalArgumentException if the partials are null or invalid
  */
 public static Years yearsBetween(ReadablePartial start, ReadablePartial end) {
   if (start instanceof LocalDate && end instanceof LocalDate) {
     Chronology chrono = DateTimeUtils.getChronology(start.getChronology());
     int years =
         chrono
             .years()
             .getDifference(
                 ((LocalDate) end).getLocalMillis(), ((LocalDate) start).getLocalMillis());
     return Years.years(years);
   }
   int amount = BaseSingleFieldPeriod.between(start, end, ZERO);
   return Years.years(amount);
 }
示例#2
0
 /**
  * Creates a new <code>Years</code> by parsing a string in the ISO8601 format 'PnY'.
  *
  * <p>The parse will accept the full ISO syntax of PnYnMnWnDTnHnMnS however only the years
  * component may be non-zero. If any other component is non-zero, an exception will be thrown.
  *
  * @param periodStr the period string, null returns zero
  * @return the period in years
  * @throws IllegalArgumentException if the string format is invalid
  */
 public static Years parseYears(String periodStr) {
   if (periodStr == null) {
     return Years.ZERO;
   }
   Period p = PARSER.parsePeriod(periodStr);
   return Years.years(p.getYears());
 }
示例#3
0
 /**
  * Creates a <code>Years</code> representing the number of whole years in the specified interval.
  * This method corectly handles any daylight savings time changes that may occur during the
  * interval.
  *
  * @param interval the interval to extract years from, null returns zero
  * @return the period in years
  * @throws IllegalArgumentException if the partials are null or invalid
  */
 public static Years yearsIn(ReadableInterval interval) {
   if (interval == null) {
     return Years.ZERO;
   }
   int amount =
       BaseSingleFieldPeriod.between(
           interval.getStart(), interval.getEnd(), DurationFieldType.years());
   return Years.years(amount);
 }
示例#4
0
 /**
  * Creates a <code>Years</code> representing the number of whole years between the two specified
  * datetimes. This method corectly handles any daylight savings time changes that may occur during
  * the interval.
  *
  * @param start the start instant, must not be null
  * @param end the end instant, must not be null
  * @return the period in years
  * @throws IllegalArgumentException if the instants are null or invalid
  */
 public static Years yearsBetween(ReadableInstant start, ReadableInstant end) {
   int amount = BaseSingleFieldPeriod.between(start, end, DurationFieldType.years());
   return Years.years(amount);
 }
示例#5
0
 /**
  * Returns a new instance with the years value negated.
  *
  * @return the new period with a negated value
  * @throws ArithmeticException if the result overflows an int
  */
 public Years negated() {
   return Years.years(FieldUtils.safeNegate(getValue()));
 }
示例#6
0
 /**
  * Returns a new instance with the years divided by the specified divisor. The calculation uses
  * integer division, thus 3 divided by 2 is 1.
  *
  * <p>This instance is immutable and unaffected by this method call.
  *
  * @param divisor the amount to divide by, may be negative
  * @return the new period divided by the specified divisor
  * @throws ArithmeticException if the divisor is zero
  */
 public Years dividedBy(int divisor) {
   if (divisor == 1) {
     return this;
   }
   return Years.years(getValue() / divisor);
 }
示例#7
0
 /**
  * Returns a new instance with the years multiplied by the specified scalar.
  *
  * <p>This instance is immutable and unaffected by this method call.
  *
  * @param scalar the amount to multiply by, may be negative
  * @return the new period multiplied by the specified scalar
  * @throws ArithmeticException if the result overflows an int
  */
 public Years multipliedBy(int scalar) {
   return Years.years(FieldUtils.safeMultiply(getValue(), scalar));
 }
示例#8
0
 /**
  * Returns a new instance with the specified number of years added.
  *
  * <p>This instance is immutable and unaffected by this method call.
  *
  * @param years the amount of years to add, may be negative
  * @return the new period plus the specified number of years
  * @throws ArithmeticException if the result overflows an int
  */
 public Years plus(int years) {
   if (years == 0) {
     return this;
   }
   return Years.years(FieldUtils.safeAdd(getValue(), years));
 }
示例#9
0
 /**
  * Resolves singletons.
  *
  * @return the singleton instance
  */
 private Object readResolve() {
   return Years.years(getValue());
 }