org.joda.time

Class Period

Implemented Interfaces:
ReadablePeriod, Serializable

public final class Period
extends BasePeriod
implements ReadablePeriod, Serializable

An immutable time period specifying a set of duration field values.

A time period is divided into a number of fields, such as hours and seconds. Which fields are supported is defined by the PeriodType class. The default is the standard period type, which supports years, months, weeks, days, hours, minutes, seconds and millis.

When this time period is added to an instant, the effect is of adding each field in turn. As a result, this takes into account daylight savings time. Adding a time period of 1 day to the day before daylight savings starts will only add 23 hours rather than 24 to ensure that the time remains the same. If this is not the behaviour you want, then see Duration.

The definition of a period also affects the equals method. A period of 1 day is not equal to a period of 24 hours, nor 1 hour equal to 60 minutes. This is because periods represent an abstracted definition of a time period (eg. a day may not actually be 24 hours, it might be 23 or 25 at daylight savings boundary). To compare the actual duration of two periods, convert both to durations using toDuration, an operation that emphasises that the result may differ according to the date you choose.

Period is thread-safe and immutable, provided that the PeriodType is as well. All standard PeriodType classes supplied are thread-safe and immutable.

Authors:
Brian S O'Neill
Stephen Colebourne
Since:
1.0
See Also:
MutablePeriod

Field Summary

static Period
ZERO
A period of zero length and standard period type.

Constructor Summary

Period()
Creates a new empty period with the standard set of fields.
Period(Object period)
Creates a period by converting or copying from another object.
Period(Object period, Chronology chrono)
Creates a period by converting or copying from another object.
Period(Object period, PeriodType type)
Creates a period by converting or copying from another object.
Period(Object period, PeriodType type, Chronology chrono)
Creates a period by converting or copying from another object.
Period(int hours, int minutes, int seconds, int millis)
Create a period from a set of field values using the standard set of fields.
Period(int years, int months, int weeks, int days, int hours, int minutes, int seconds, int millis)
Create a period from a set of field values using the standard set of fields.
Period(int years, int months, int weeks, int days, int hours, int minutes, int seconds, int millis, PeriodType type)
Create a period from a set of field values.
Period(long duration)
Creates a period from the given millisecond duration using the standard set of fields.
Period(long startInstant, long endInstant)
Creates a period from the given interval endpoints using the standard set of fields.
Period(long startInstant, long endInstant, Chronology chrono)
Creates a period from the given interval endpoints using the standard set of fields.
Period(long startInstant, long endInstant, PeriodType type)
Creates a period from the given interval endpoints.
Period(long startInstant, long endInstant, PeriodType type, Chronology chrono)
Creates a period from the given interval endpoints.
Period(long duration, Chronology chronology)
Creates a period from the given millisecond duration using the standard set of fields.
Period(long duration, PeriodType type)
Creates a period from the given millisecond duration.
Period(long duration, PeriodType type, Chronology chronology)
Creates a period from the given millisecond duration.
Period(ReadableDuration duration, ReadableInstant endInstant)
Creates a period from the given duration and end point.
Period(ReadableDuration duration, ReadableInstant endInstant, PeriodType type)
Creates a period from the given duration and end point.
Period(ReadableInstant startInstant, ReadableDuration duration)
Creates a period from the given start point and the duration.
Period(ReadableInstant startInstant, ReadableDuration duration, PeriodType type)
Creates a period from the given start point and the duration.
Period(ReadableInstant startInstant, ReadableInstant endInstant)
Creates a period from the given interval endpoints using the standard set of fields.
Period(ReadableInstant startInstant, ReadableInstant endInstant, PeriodType type)
Creates a period from the given interval endpoints.
Period(ReadablePartial start, ReadablePartial end)
Creates a period from two partially specified times.
Period(ReadablePartial start, ReadablePartial end, PeriodType type)
Creates a period from two partially specified times.

Method Summary

static Period
days(int days)
Create a period with a specified number of days.
static Period
fieldDifference(ReadablePartial start, ReadablePartial end)
Creates a period from two partially specified times, calculating by field difference.
int
getDays()
Gets the days field part of the period.
int
getHours()
Gets the hours field part of the period.
int
getMillis()
Gets the millis field part of the period.
int
getMinutes()
Gets the minutes field part of the period.
int
getMonths()
Gets the months field part of the period.
int
getSeconds()
Gets the seconds field part of the period.
int
getWeeks()
Gets the weeks field part of the period.
int
getYears()
Gets the years field part of the period.
static Period
hours(int hours)
Create a period with a specified number of hours.
static Period
millis(int millis)
Create a period with a specified number of millis.
Period
minus(ReadablePeriod period)
Returns a new period with the specified period subtracted.
Period
minusDays(int days)
Returns a new period minus the specified number of days taken away.
Period
minusHours(int hours)
Returns a new period minus the specified number of hours taken away.
Period
minusMillis(int millis)
Returns a new period minus the specified number of millis taken away.
Period
minusMinutes(int minutes)
Returns a new period minus the specified number of minutes taken away.
Period
minusMonths(int months)
Returns a new period minus the specified number of months taken away.
Period
minusSeconds(int seconds)
Returns a new period minus the specified number of seconds taken away.
Period
minusWeeks(int weeks)
Returns a new period minus the specified number of weeks taken away.
Period
minusYears(int years)
Returns a new period with the specified number of years taken away.
static Period
minutes(int minutes)
Create a period with a specified number of minutes.
static Period
months(int months)
Create a period with a specified number of months.
Period
normalizedStandard()
Normalizes this period using standard rules, assuming a 12 month year, 7 day week, 24 hour day, 60 minute hour and 60 second minute.
Period
normalizedStandard(PeriodType type)
Normalizes this period using standard rules, assuming a 12 month year, 7 day week, 24 hour day, 60 minute hour and 60 second minute, providing control over how the result is split into fields.
Period
plus(ReadablePeriod period)
Returns a new period with the specified period added.
Period
plusDays(int days)
Returns a new period plus the specified number of days added.
Period
plusHours(int hours)
Returns a new period plus the specified number of hours added.
Period
plusMillis(int millis)
Returns a new period plus the specified number of millis added.
Period
plusMinutes(int minutes)
Returns a new period plus the specified number of minutes added.
Period
plusMonths(int months)
Returns a new period plus the specified number of months added.
Period
plusSeconds(int seconds)
Returns a new period plus the specified number of seconds added.
Period
plusWeeks(int weeks)
Returns a new period plus the specified number of weeks added.
Period
plusYears(int years)
Returns a new period with the specified number of years added.
static Period
seconds(int seconds)
Create a period with a specified number of seconds.
Period
toPeriod()
Get this period as an immutable Period object by returning this.
Days
toStandardDays()
Converts this period to a period in days assuming a 7 day week, 24 hour day, 60 minute hour and 60 second minute.
Duration
toStandardDuration()
Converts this period to a duration assuming a 7 day week, 24 hour day, 60 minute hour and 60 second minute.
Hours
toStandardHours()
Converts this period to a period in hours assuming a 7 day week, 24 hour day, 60 minute hour and 60 second minute.
Minutes
toStandardMinutes()
Converts this period to a period in minutes assuming a 7 day week, 24 hour day, 60 minute hour and 60 second minute.
Seconds
toStandardSeconds()
Converts this period to a period in seconds assuming a 7 day week, 24 hour day, 60 minute hour and 60 second minute.
Weeks
toStandardWeeks()
Converts this period to a period in weeks assuming a 7 day week, 24 hour day, 60 minute hour and 60 second minute.
static Period
weeks(int weeks)
Create a period with a specified number of weeks.
Period
withDays(int days)
Returns a new period with the specified number of days.
Period
withField(DurationFieldType field, int value)
Creates a new Period instance with the specified field set to a new value.
Period
withFieldAdded(DurationFieldType field, int value)
Creates a new Period instance with the valueToAdd added to the specified field.
Period
withFields(ReadablePeriod period)
Creates a new Period instance with the fields from the specified period copied on top of those from this period.
Period
withHours(int hours)
Returns a new period with the specified number of hours.
Period
withMillis(int millis)
Returns a new period with the specified number of millis.
Period
withMinutes(int minutes)
Returns a new period with the specified number of minutes.
Period
withMonths(int months)
Returns a new period with the specified number of months.
Period
withPeriodType(PeriodType type)
Creates a new Period instance with the same field values but different PeriodType.
Period
withSeconds(int seconds)
Returns a new period with the specified number of seconds.
Period
withWeeks(int weeks)
Returns a new period with the specified number of weeks.
Period
withYears(int years)
Returns a new period with the specified number of years.
static Period
years(int years)
Create a period with a specified number of years.

Methods inherited from class org.joda.time.base.BasePeriod

addField, addFieldInto, addPeriod, addPeriodInto, checkPeriodType, getFieldType, getPeriodType, getValue, mergePeriod, mergePeriodInto, setField, setFieldInto, setPeriod, setPeriod, setValue, setValues, size, toDurationFrom, toDurationTo

Methods inherited from class org.joda.time.base.AbstractPeriod

equals, get, getFieldTypes, getValues, hashCode, indexOf, isSupported, toMutablePeriod, toPeriod, toString, toString

Field Details

ZERO

public static final Period ZERO
A period of zero length and standard period type.
Since:
1.4

Constructor Details

Period

public Period()
Creates a new empty period with the standard set of fields.

One way to initialise a period is as follows:

 Period = new Period().withYears(6).withMonths(3).withSeconds(23);
 
Bear in mind that this creates four period instances in total, three of which are immediately discarded. The alterative is more efficient, but less readable:
 Period = new Period(6, 3, 0, 0, 0, 0, 23, 0);
 
The following is also slightly less wasteful:
 Period = Period.years(6).withMonths(3).withSeconds(23);
 

Period

public Period(Object period)
Parameters:
period - period to convert

Period

public Period(Object period,
              Chronology chrono)
Creates a period by converting or copying from another object.

The recognised object types are defined in ConverterManager and include ReadablePeriod, ReadableInterval and String. The String formats are described by ISOPeriodFormat.standard().

Parameters:
period - period to convert
chrono - the chronology to use, null means ISO in default zone

Period

public Period(Object period,
              PeriodType type)
Creates a period by converting or copying from another object.

The recognised object types are defined in ConverterManager and include ReadablePeriod, ReadableInterval and String. The String formats are described by ISOPeriodFormat.standard().

Parameters:
period - period to convert
type - which set of fields this period supports, null means use converter

Period

public Period(Object period,
              PeriodType type,
              Chronology chrono)
Creates a period by converting or copying from another object.

The recognised object types are defined in ConverterManager and include ReadablePeriod, ReadableInterval and String. The String formats are described by ISOPeriodFormat.standard().

Parameters:
period - period to convert
type - which set of fields this period supports, null means use converter
chrono - the chronology to use, null means ISO in default zone

Period

public Period(int hours,
              int minutes,
              int seconds,
              int millis)
Create a period from a set of field values using the standard set of fields. Note that the parameters specify the time fields hours, minutes, seconds and millis, not the date fields.
Parameters:
hours - amount of hours in this period
minutes - amount of minutes in this period
seconds - amount of seconds in this period
millis - amount of milliseconds in this period

Period

public Period(int years,
              int months,
              int weeks,
              int days,
              int hours,
              int minutes,
              int seconds,
              int millis)
Create a period from a set of field values using the standard set of fields.
Parameters:
years - amount of years in this period
months - amount of months in this period
weeks - amount of weeks in this period
days - amount of days in this period
hours - amount of hours in this period
minutes - amount of minutes in this period
seconds - amount of seconds in this period
millis - amount of milliseconds in this period

Period

public Period(int years,
              int months,
              int weeks,
              int days,
              int hours,
              int minutes,
              int seconds,
              int millis,
              PeriodType type)
Create a period from a set of field values.

There is usually little need to use this constructor. The period type is used primarily to define how to split an interval into a period. As this constructor already is split, the period type does no real work.

Parameters:
years - amount of years in this period, which must be zero if unsupported
months - amount of months in this period, which must be zero if unsupported
weeks - amount of weeks in this period, which must be zero if unsupported
days - amount of days in this period, which must be zero if unsupported
hours - amount of hours in this period, which must be zero if unsupported
minutes - amount of minutes in this period, which must be zero if unsupported
seconds - amount of seconds in this period, which must be zero if unsupported
millis - amount of milliseconds in this period, which must be zero if unsupported
type - which set of fields this period supports, null means AllType

Period

public Period(long duration)
Parameters:
duration - the duration, in milliseconds

Period

public Period(long startInstant,
              long endInstant)
Creates a period from the given interval endpoints using the standard set of fields.
Parameters:
startInstant - interval start, in milliseconds
endInstant - interval end, in milliseconds

Period

public Period(long startInstant,
              long endInstant,
              Chronology chrono)
Creates a period from the given interval endpoints using the standard set of fields.
Parameters:
startInstant - interval start, in milliseconds
endInstant - interval end, in milliseconds
chrono - the chronology to use, null means ISO in default zone

Period

public Period(long startInstant,
              long endInstant,
              PeriodType type)
Creates a period from the given interval endpoints.
Parameters:
startInstant - interval start, in milliseconds
endInstant - interval end, in milliseconds
type - which set of fields this period supports, null means standard

Period

public Period(long startInstant,
              long endInstant,
              PeriodType type,
              Chronology chrono)
Creates a period from the given interval endpoints.
Parameters:
startInstant - interval start, in milliseconds
endInstant - interval end, in milliseconds
type - which set of fields this period supports, null means standard
chrono - the chronology to use, null means ISO in default zone

Period

public Period(long duration,
              Chronology chronology)
Creates a period from the given millisecond duration using the standard set of fields.

Only precise fields in the period type will be used. Imprecise fields will not be populated.

If the duration is small then this method will perform as you might expect and split the fields evenly.

If the duration is large then all the remaining duration will be stored in the largest available precise field. For details as to which fields are precise, review the period type javadoc.

Parameters:
duration - the duration, in milliseconds
chronology - the chronology to use to split the duration, null means ISO default

Period

public Period(long duration,
              PeriodType type)
Creates a period from the given millisecond duration.

Only precise fields in the period type will be used. Imprecise fields will not be populated.

If the duration is small then this method will perform as you might expect and split the fields evenly.

If the duration is large then all the remaining duration will be stored in the largest available precise field. For details as to which fields are precise, review the period type javadoc.

Parameters:
duration - the duration, in milliseconds
type - which set of fields this period supports, null means standard

Period

public Period(long duration,
              PeriodType type,
              Chronology chronology)
Creates a period from the given millisecond duration.

Only precise fields in the period type will be used. Imprecise fields will not be populated.

If the duration is small then this method will perform as you might expect and split the fields evenly.

If the duration is large then all the remaining duration will be stored in the largest available precise field. For details as to which fields are precise, review the period type javadoc.

Parameters:
duration - the duration, in milliseconds
type - which set of fields this period supports, null means standard
chronology - the chronology to use to split the duration, null means ISO default

Period

public Period(ReadableDuration duration,
              ReadableInstant endInstant)
Creates a period from the given duration and end point.
Parameters:
duration - the duration of the interval, null means zero-length
endInstant - the interval end, null means now

Period

public Period(ReadableDuration duration,
              ReadableInstant endInstant,
              PeriodType type)
Creates a period from the given duration and end point.
Parameters:
duration - the duration of the interval, null means zero-length
endInstant - the interval end, null means now
type - which set of fields this period supports, null means standard

Period

public Period(ReadableInstant startInstant,
              ReadableDuration duration)
Creates a period from the given start point and the duration.
Parameters:
startInstant - the interval start, null means now
duration - the duration of the interval, null means zero-length

Period

public Period(ReadableInstant startInstant,
              ReadableDuration duration,
              PeriodType type)
Creates a period from the given start point and the duration.
Parameters:
startInstant - the interval start, null means now
duration - the duration of the interval, null means zero-length
type - which set of fields this period supports, null means standard

Period

public Period(ReadableInstant startInstant,
              ReadableInstant endInstant)
Creates a period from the given interval endpoints using the standard set of fields.
Parameters:
startInstant - interval start, null means now
endInstant - interval end, null means now

Period

public Period(ReadableInstant startInstant,
              ReadableInstant endInstant,
              PeriodType type)
Creates a period from the given interval endpoints.
Parameters:
startInstant - interval start, null means now
endInstant - interval end, null means now
type - which set of fields this period supports, null means standard

Period

public Period(ReadablePartial start,
              ReadablePartial end)
Creates a period from two partially specified times.

The two partials must contain the same fields, thus you can specify two LocalDate objects, or two LocalTime objects, but not one of each. As these are Partial objects, time zones have no effect on the result.

The two partials must also both be contiguous - see DateTimeUtils.isContiguous(ReadablePartial) for a definition. Both LocalDate and LocalTime are contiguous.

An alternative way of constructing a Period from two Partials is fieldDifference(ReadablePartial,ReadablePartial). That method handles all kinds of partials.

Parameters:
start - the start of the period, must not be null
end - the end of the period, must not be null
Since:
1.1

Period

public Period(ReadablePartial start,
              ReadablePartial end,
              PeriodType type)
Creates a period from two partially specified times.

The two partials must contain the same fields, thus you can specify two LocalDate objects, or two LocalTime objects, but not one of each. As these are Partial objects, time zones have no effect on the result.

The two partials must also both be contiguous - see DateTimeUtils.isContiguous(ReadablePartial) for a definition. Both LocalDate and LocalTime are contiguous.

An alternative way of constructing a Period from two Partials is fieldDifference(ReadablePartial,ReadablePartial). That method handles all kinds of partials.

Parameters:
start - the start of the period, must not be null
end - the end of the period, must not be null
type - which set of fields this period supports, null means standard
Since:
1.1

Method Details

days

public static Period days(int days)
Create a period with a specified number of days.

The standard period type is used, thus you can add other fields such as months or weeks using the withXxx() methods. For example, Period.days(2).withHours(6);

If you want a day-based period that cannot have other fields added, then you should consider using Days.

Parameters:
days - the amount of days in this period
Returns:
the period

fieldDifference

public static Period fieldDifference(ReadablePartial start,
                                     ReadablePartial end)
Creates a period from two partially specified times, calculating by field difference.

The two partials must contain the same fields, thus you can specify two LocalDate objects, or two LocalTime objects, but not one of each. Also, the partial may not contain overlapping fields, such as dayOfWeek and dayOfMonth.

Calculation by field difference works by extracting the difference one field at a time and not wrapping into other fields. Thus 2005-06-09/2007-04-12 will yield P1Y-2M3D.

For example, you have an event that always runs from the 27th of each month to the 2nd of the next month. If you calculate this period using a standard constructor, then you will get between P3D and P6D depending on the month. If you use this method, then you will get P1M-25D. This field-difference based period can be successfully applied to each month of the year to obtain the correct end date for a given start date.

Parameters:
start - the start of the period, must not be null
end - the end of the period, must not be null
Since:
1.1

getDays

public int getDays()
Gets the days field part of the period.
Returns:
the number of days in the period, zero if unsupported

getHours

public int getHours()
Gets the hours field part of the period.
Returns:
the number of hours in the period, zero if unsupported

getMillis

public int getMillis()
Gets the millis field part of the period.
Returns:
the number of millis in the period, zero if unsupported

getMinutes

public int getMinutes()
Gets the minutes field part of the period.
Returns:
the number of minutes in the period, zero if unsupported

getMonths

public int getMonths()
Gets the months field part of the period.
Returns:
the number of months in the period, zero if unsupported

getSeconds

public int getSeconds()
Gets the seconds field part of the period.
Returns:
the number of seconds in the period, zero if unsupported

getWeeks

public int getWeeks()
Gets the weeks field part of the period.
Returns:
the number of weeks in the period, zero if unsupported

getYears

public int getYears()
Gets the years field part of the period.
Returns:
the number of years in the period, zero if unsupported

hours

public static Period hours(int hours)
Create a period with a specified number of hours.

The standard period type is used, thus you can add other fields such as months or days using the withXxx() methods. For example, Period.hours(2).withMinutes(30);

If you want a hour-based period that cannot have other fields added, then you should consider using Hours.

Parameters:
hours - the amount of hours in this period
Returns:
the period

millis

public static Period millis(int millis)
Create a period with a specified number of millis.

The standard period type is used, thus you can add other fields such as days or hours using the withXxx() methods. For example, Period.millis(20).withSeconds(30);

Parameters:
millis - the amount of millis in this period
Returns:
the period

minus

public Period minus(ReadablePeriod period)
Returns a new period with the specified period subtracted.

Each field of the period is subtracted separately. Thus a period of 3 hours 30 minutes minus 2 hours 40 minutes will produce a result of 1 hour and -10 minutes - see normalizedStandard().

If the period being added contains a non-zero amount for a field that is not supported in this period then an exception is thrown.

This period instance is immutable and unaffected by this method call.

Parameters:
period - the period to add, null adds zero and returns this
Returns:
the new updated period
Since:
1.5

minusDays

public Period minusDays(int days)
Returns a new period minus the specified number of days taken away.

This period instance is immutable and unaffected by this method call.

Parameters:
days - the amount of days to take away, may be negative
Returns:
the new period minus the increased days

minusHours

public Period minusHours(int hours)
Returns a new period minus the specified number of hours taken away.

This period instance is immutable and unaffected by this method call.

Parameters:
hours - the amount of hours to take away, may be negative
Returns:
the new period minus the increased hours

minusMillis

public Period minusMillis(int millis)
Returns a new period minus the specified number of millis taken away.

This period instance is immutable and unaffected by this method call.

Parameters:
millis - the amount of millis to take away, may be negative
Returns:
the new period minus the increased millis

minusMinutes

public Period minusMinutes(int minutes)
Returns a new period minus the specified number of minutes taken away.

This period instance is immutable and unaffected by this method call.

Parameters:
minutes - the amount of minutes to take away, may be negative
Returns:
the new period minus the increased minutes

minusMonths

public Period minusMonths(int months)
Returns a new period minus the specified number of months taken away.

This period 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 increased months

minusSeconds

public Period minusSeconds(int seconds)
Returns a new period minus the specified number of seconds taken away.

This period instance is immutable and unaffected by this method call.

Parameters:
seconds - the amount of seconds to take away, may be negative
Returns:
the new period minus the increased seconds

minusWeeks

public Period minusWeeks(int weeks)
Returns a new period minus the specified number of weeks taken away.

This period instance is immutable and unaffected by this method call.

Parameters:
weeks - the amount of weeks to take away, may be negative
Returns:
the new period minus the increased weeks

minusYears

public Period minusYears(int years)
Returns a new period with the specified number of years taken away.

This period instance is immutable and unaffected by this method call.

Parameters:
years - the amount of years to take away, may be negative
Returns:
the new period with the increased years

minutes

public static Period minutes(int minutes)
Create a period with a specified number of minutes.

The standard period type is used, thus you can add other fields such as days or hours using the withXxx() methods. For example, Period.minutes(2).withSeconds(30);

If you want a minute-based period that cannot have other fields added, then you should consider using Minutes.

Parameters:
minutes - the amount of minutes in this period
Returns:
the period

months

public static Period months(int months)
Create a period with a specified number of months.

The standard period type is used, thus you can add other fields such as years or days using the withXxx() methods. For example, Period.months(2).withDays(6);

If you want a month-based period that cannot have other fields added, then you should consider using Months.

Parameters:
months - the amount of months in this period
Returns:
the period

normalizedStandard

public Period normalizedStandard()
Normalizes this period using standard rules, assuming a 12 month year, 7 day week, 24 hour day, 60 minute hour and 60 second minute.

This method allows you to normalize a period. However to achieve this it makes the assumption that all years are 12 months, all weeks are 7 days, all days are 24 hours, all hours are 60 minutes and all minutes are 60 seconds. This is not true when daylight savings time is considered, and may also not be true for some chronologies. However, it is included as it is a useful operation for many applications and business rules.

If the period contains years or months, then the months will be normalized to be between 0 and 11. The days field and below will be normalized as necessary, however this will not overflow into the months field. Thus a period of 1 year 15 months will normalize to 2 years 3 months. But a period of 1 month 40 days will remain as 1 month 40 days.

The result will always have a PeriodType of standard, thus days will be grouped into weeks.

Returns:
a normalized period equivalent to this period
Since:
1.5

normalizedStandard

public Period normalizedStandard(PeriodType type)
Normalizes this period using standard rules, assuming a 12 month year, 7 day week, 24 hour day, 60 minute hour and 60 second minute, providing control over how the result is split into fields.

This method allows you to normalize a period. However to achieve this it makes the assumption that all years are 12 months, all weeks are 7 days, all days are 24 hours, all hours are 60 minutes and all minutes are 60 seconds. This is not true when daylight savings time is considered, and may also not be true for some chronologies. However, it is included as it is a useful operation for many applications and business rules.

If the period contains years or months, then the months will be normalized to be between 0 and 11. The days field and below will be normalized as necessary, however this will not overflow into the months field. Thus a period of 1 year 15 months will normalize to 2 years 3 months. But a period of 1 month 40 days will remain as 1 month 40 days.

The PeriodType parameter controls how the result is created. It allows you to omit certain fields from the result if desired. For example, you may not want the result to include weeks, in which case you pass in PeriodType.yearMonthDayTime().

Parameters:
type - the period type of the new period, null means standard type
Returns:
a normalized period equivalent to this period
Since:
1.5

plus

public Period plus(ReadablePeriod period)
Returns a new period with the specified period added.

Each field of the period is added separately. Thus a period of 2 hours 30 minutes plus 3 hours 40 minutes will produce a result of 5 hours 70 minutes - see normalizedStandard().

If the period being added contains a non-zero amount for a field that is not supported in this period then an exception is thrown.

This period instance is immutable and unaffected by this method call.

Parameters:
period - the period to add, null adds zero and returns this
Returns:
the new updated period
Since:
1.5

plusDays

public Period plusDays(int days)
Returns a new period plus the specified number of days added.

This period instance is immutable and unaffected by this method call.

Parameters:
days - the amount of days to add, may be negative
Returns:
the new period plus the increased days

plusHours

public Period plusHours(int hours)
Returns a new period plus the specified number of hours added.

This period instance is immutable and unaffected by this method call.

Parameters:
hours - the amount of hours to add, may be negative
Returns:
the new period plus the increased hours

plusMillis

public Period plusMillis(int millis)
Returns a new period plus the specified number of millis added.

This period instance is immutable and unaffected by this method call.

Parameters:
millis - the amount of millis to add, may be negative
Returns:
the new period plus the increased millis

plusMinutes

public Period plusMinutes(int minutes)
Returns a new period plus the specified number of minutes added.

This period instance is immutable and unaffected by this method call.

Parameters:
minutes - the amount of minutes to add, may be negative
Returns:
the new period plus the increased minutes

plusMonths

public Period plusMonths(int months)
Returns a new period plus the specified number of months added.

This period 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 increased months

plusSeconds

public Period plusSeconds(int seconds)
Returns a new period plus the specified number of seconds added.

This period instance is immutable and unaffected by this method call.

Parameters:
seconds - the amount of seconds to add, may be negative
Returns:
the new period plus the increased seconds

plusWeeks

public Period plusWeeks(int weeks)
Returns a new period plus the specified number of weeks added.

This period instance is immutable and unaffected by this method call.

Parameters:
weeks - the amount of weeks to add, may be negative
Returns:
the new period plus the increased weeks

plusYears

public Period plusYears(int years)
Returns a new period with the specified number of years added.

This period instance is immutable and unaffected by this method call.

Parameters:
years - the amount of years to add, may be negative
Returns:
the new period with the increased years

seconds

public static Period seconds(int seconds)
Create a period with a specified number of seconds.

The standard period type is used, thus you can add other fields such as days or hours using the withXxx() methods. For example, Period.seconds(2).withMillis(30);

If you want a second-based period that cannot have other fields added, then you should consider using Seconds.

Parameters:
seconds - the amount of seconds in this period
Returns:
the period

toPeriod

public Period toPeriod()
Get this period as an immutable Period object by returning this.
Specified by:
toPeriod in interface ReadablePeriod
Overrides:
toPeriod in interface AbstractPeriod
Returns:
this

toStandardDays

public Days toStandardDays()
Converts this period to a period in days assuming a 7 day week, 24 hour day, 60 minute hour and 60 second minute.

This method allows you to convert between different types of period. However to achieve this it makes the assumption that all weeks are 7 days, all days are 24 hours, all hours are 60 minutes and all minutes are 60 seconds. This is not true when daylight savings time is considered, and may also not be true for some unusual chronologies. However, it is included as it is a useful operation for many applications and business rules.

If the period contains years or months, an exception will be thrown.

Returns:
a period representing the number of standard days in this period
Since:
1.5

toStandardDuration

public Duration toStandardDuration()
Converts this period to a duration assuming a 7 day week, 24 hour day, 60 minute hour and 60 second minute.

This method allows you to convert from a period to a duration. However to achieve this it makes the assumption that all weeks are 7 days, all days are 24 hours, all hours are 60 minutes and all minutes are 60 seconds. This is not true when daylight savings time is considered, and may also not be true for some unusual chronologies. However, it is included as it is a useful operation for many applications and business rules.

If the period contains years or months, an exception will be thrown.

Returns:
a duration equivalent to this period
Since:
1.5

toStandardHours

public Hours toStandardHours()
Converts this period to a period in hours assuming a 7 day week, 24 hour day, 60 minute hour and 60 second minute.

This method allows you to convert between different types of period. However to achieve this it makes the assumption that all weeks are 7 days, all days are 24 hours, all hours are 60 minutes and all minutes are 60 seconds. This is not true when daylight savings time is considered, and may also not be true for some unusual chronologies. However, it is included as it is a useful operation for many applications and business rules.

If the period contains years or months, an exception will be thrown.

Returns:
a period representing the number of standard hours in this period
Since:
1.5

toStandardMinutes

public Minutes toStandardMinutes()
Converts this period to a period in minutes assuming a 7 day week, 24 hour day, 60 minute hour and 60 second minute.

This method allows you to convert between different types of period. However to achieve this it makes the assumption that all weeks are 7 days, all days are 24 hours, all hours are 60 minutes and all minutes are 60 seconds. This is not true when daylight savings time is considered, and may also not be true for some unusual chronologies. However, it is included as it is a useful operation for many applications and business rules.

If the period contains years or months, an exception will be thrown.

Returns:
a period representing the number of standard minutes in this period
Since:
1.5

toStandardSeconds

public Seconds toStandardSeconds()
Converts this period to a period in seconds assuming a 7 day week, 24 hour day, 60 minute hour and 60 second minute.

This method allows you to convert between different types of period. However to achieve this it makes the assumption that all weeks are 7 days, all days are 24 hours, all hours are 60 minutes and all minutes are 60 seconds. This is not true when daylight savings time is considered, and may also not be true for some unusual chronologies. However, it is included as it is a useful operation for many applications and business rules.

If the period contains years or months, an exception will be thrown.

Returns:
a period representing the number of standard seconds in this period
Since:
1.5

toStandardWeeks

public Weeks toStandardWeeks()
Converts this period to a period in weeks assuming a 7 day week, 24 hour day, 60 minute hour and 60 second minute.

This method allows you to convert between different types of period. However to achieve this it makes the assumption that all weeks are 7 days, all days are 24 hours, all hours are 60 minutes and all minutes are 60 seconds. This is not true when daylight savings time is considered, and may also not be true for some unusual chronologies. However, it is included as it is a useful operation for many applications and business rules.

If the period contains years or months, an exception will be thrown.

Returns:
a period representing the number of standard weeks in this period
Since:
1.5

weeks

public static Period weeks(int weeks)
Create a period with a specified number of weeks.

The standard period type is used, thus you can add other fields such as months or days using the withXxx() methods. For example, Period.weeks(2).withDays(6);

If you want a week-based period that cannot have other fields added, then you should consider using Weeks.

Parameters:
weeks - the amount of weeks in this period
Returns:
the period

withDays

public Period withDays(int days)
Returns a new period with the specified number of days.

This period instance is immutable and unaffected by this method call.

Parameters:
days - the amount of days to add, may be negative
Returns:
the new period with the increased days

withField

public Period withField(DurationFieldType field,
                        int value)
Creates a new Period instance with the specified field set to a new value.

This period instance is immutable and unaffected by this method call.

Parameters:
field - the field to set, not null
value - the value to set to
Returns:
the new period instance

withFieldAdded

public Period withFieldAdded(DurationFieldType field,
                             int value)
Creates a new Period instance with the valueToAdd added to the specified field.

This period instance is immutable and unaffected by this method call.

Parameters:
field - the field to set, not null
value - the value to add
Returns:
the new period instance

withFields

public Period withFields(ReadablePeriod period)
Creates a new Period instance with the fields from the specified period copied on top of those from this period.

This period instance is immutable and unaffected by this method call.

Parameters:
period - the period to copy from, null ignored
Returns:
the new period instance

withHours

public Period withHours(int hours)
Returns a new period with the specified number of hours.

This period instance is immutable and unaffected by this method call.

Parameters:
hours - the amount of hours to add, may be negative
Returns:
the new period with the increased hours

withMillis

public Period withMillis(int millis)
Returns a new period with the specified number of millis.

This period instance is immutable and unaffected by this method call.

Parameters:
millis - the amount of millis to add, may be negative
Returns:
the new period with the increased millis

withMinutes

public Period withMinutes(int minutes)
Returns a new period with the specified number of minutes.

This period instance is immutable and unaffected by this method call.

Parameters:
minutes - the amount of minutes to add, may be negative
Returns:
the new period with the increased minutes

withMonths

public Period withMonths(int months)
Returns a new period with the specified number of months.

This period instance is immutable and unaffected by this method call.

Parameters:
months - the amount of months to add, may be negative
Returns:
the new period with the increased months

withPeriodType

public Period withPeriodType(PeriodType type)
Creates a new Period instance with the same field values but different PeriodType.

This period instance is immutable and unaffected by this method call.

Parameters:
type - the period type to use, null means standard
Returns:
the new period instance

withSeconds

public Period withSeconds(int seconds)
Returns a new period with the specified number of seconds.

This period instance is immutable and unaffected by this method call.

Parameters:
seconds - the amount of seconds to add, may be negative
Returns:
the new period with the increased seconds

withWeeks

public Period withWeeks(int weeks)
Returns a new period with the specified number of weeks.

This period instance is immutable and unaffected by this method call.

Parameters:
weeks - the amount of weeks to add, may be negative
Returns:
the new period with the increased weeks

withYears

public Period withYears(int years)
Returns a new period with the specified number of years.

This period instance is immutable and unaffected by this method call.

Parameters:
years - the amount of years to add, may be negative
Returns:
the new period with the increased years

years

public static Period years(int years)
Create a period with a specified number of years.

The standard period type is used, thus you can add other fields such as months or days using the withXxx() methods. For example, Period.years(2).withMonths(6);

If you want a year-based period that cannot have other fields added, then you should consider using Years.

Parameters:
years - the amount of years in this period
Returns:
the period

Copyright (c) 2001-2006 - Joda.org