public final class

YearMonthDay

extends BasePartial
implements Serializable ReadablePartial
java.lang.Object
   ↳ org.joda.time.base.AbstractPartial
     ↳ org.joda.time.base.BasePartial
       ↳ org.joda.time.YearMonthDay

This class is deprecated.
Use LocalDate which has a much better internal implementation and has been available since 1.3

Class Overview

YearMonthDay is an immutable partial supporting the year, monthOfYear and dayOfMonth fields.

NOTE: This class only supports the three fields listed above. Thus, you cannot query the dayOfWeek or centuryOfEra fields for example. The new LocalDate class removes this restriction.

Calculations on YearMonthDay are performed using a Chronology. This chronology is set to be in the UTC time zone for all calculations.

Each individual field can be queried in two ways:

  • getMonthOfYear()
  • monthOfYear().get()
The second technique also provides access to other useful methods on the field:
  • numeric value - monthOfYear().get()
  • text value - monthOfYear().getAsText()
  • short text value - monthOfYear().getAsShortText()
  • maximum/minimum values - monthOfYear().getMaximumValue()
  • add/subtract - monthOfYear().addToCopy()
  • set - monthOfYear().setCopy()

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

Summary

Nested Classes
class YearMonthDay.Property This class is deprecated. Use LocalDate which has a much better internal implementation  
Constants
int DAY_OF_MONTH The index of the dayOfMonth field in the field array
int MONTH_OF_YEAR The index of the monthOfYear field in the field array
int YEAR The index of the year field in the field array
Public Constructors
YearMonthDay()
Constructs a YearMonthDay with the current date, using ISOChronology in the default zone to extract the fields.
YearMonthDay(DateTimeZone zone)
Constructs a YearMonthDay with the current date, using ISOChronology in the specified zone to extract the fields.
YearMonthDay(Chronology chronology)
Constructs a YearMonthDay with the current date, using the specified chronology and zone to extract the fields.
YearMonthDay(long instant)
Constructs a YearMonthDay extracting the partial fields from the specified milliseconds using the ISOChronology in the default zone.
YearMonthDay(long instant, Chronology chronology)
Constructs a YearMonthDay extracting the partial fields from the specified milliseconds using the chronology provided.
YearMonthDay(Object instant)
Constructs a YearMonthDay from an Object that represents a time.
YearMonthDay(Object instant, Chronology chronology)
Constructs a YearMonthDay from an Object that represents a time, using the specified chronology.
YearMonthDay(int year, int monthOfYear, int dayOfMonth)
Constructs a YearMonthDay with specified time field values using ISOChronology in the default zone.
YearMonthDay(int year, int monthOfYear, int dayOfMonth, Chronology chronology)
Constructs a YearMonthDay with specified time field values.
Public Methods
YearMonthDay.Property dayOfMonth()
Get the day of month field property which provides access to advanced functionality.
static YearMonthDay fromCalendarFields(Calendar calendar)
Constructs a YearMonthDay from a java.util.Calendar using exactly the same field values avoiding any time zone effects.
static YearMonthDay fromDateFields(Date date)
Constructs a YearMonthDay from a java.util.Date using exactly the same field values avoiding any time zone effects.
int getDayOfMonth()
Get the day of month field value.
DateTimeFieldType getFieldType(int index)
Gets the field type at the specified index.
DateTimeFieldType[] getFieldTypes()
Gets an array of the field type of each of the fields that this partial supports.
int getMonthOfYear()
Get the month of year field value.
int getYear()
Get the year field value.
YearMonthDay minus(ReadablePeriod period)
Returns a copy of this date with the specified period taken away.
YearMonthDay minusDays(int days)
Returns a copy of this date minus the specified number of days.
YearMonthDay minusMonths(int months)
Returns a copy of this date minus the specified number of months.
YearMonthDay minusYears(int years)
Returns a copy of this date minus the specified number of years.
YearMonthDay.Property monthOfYear()
Get the month of year field property which provides access to advanced functionality.
YearMonthDay plus(ReadablePeriod period)
Returns a copy of this date with the specified period added.
YearMonthDay plusDays(int days)
Returns a copy of this date plus the specified number of days.
YearMonthDay plusMonths(int months)
Returns a copy of this date plus the specified number of months.
YearMonthDay plusYears(int years)
Returns a copy of this date plus the specified number of years.
YearMonthDay.Property property(DateTimeFieldType type)
Gets the property object for the specified type, which contains many useful methods.
int size()
Gets the number of fields in this partial.
DateMidnight toDateMidnight(DateTimeZone zone)
Converts this object to a DateMidnight.
DateMidnight toDateMidnight()
Converts this object to a DateMidnight in the default time zone.
DateTime toDateTime(TimeOfDay time)
Converts this object to a DateTime using a TimeOfDay to fill in the missing fields and using the default time zone.
DateTime toDateTime(TimeOfDay time, DateTimeZone zone)
Converts this object to a DateTime using a TimeOfDay to fill in the missing fields.
DateTime toDateTimeAtCurrentTime()
Converts this partial to a full datetime using the default time zone setting the date fields from this instance and the time fields from the current time.
DateTime toDateTimeAtCurrentTime(DateTimeZone zone)
Converts this partial to a full datetime using the specified time zone setting the date fields from this instance and the time fields from the current time.
DateTime toDateTimeAtMidnight(DateTimeZone zone)
Converts this YearMonthDay to a full datetime at midnight using the specified time zone.
DateTime toDateTimeAtMidnight()
Converts this YearMonthDay to a full datetime at midnight using the default time zone.
Interval toInterval()
Converts this object to an Interval representing the whole day in the default time zone.
Interval toInterval(DateTimeZone zone)
Converts this object to an Interval representing the whole day.
LocalDate toLocalDate()
Converts this object to a LocalDate with the same date and chronology.
String toString()
Output the date in the ISO8601 format YYYY-MM-DD.
YearMonthDay withChronologyRetainFields(Chronology newChronology)
Returns a copy of this date with the specified chronology.
YearMonthDay withDayOfMonth(int dayOfMonth)
Returns a copy of this date with the day of month field updated.
YearMonthDay withField(DateTimeFieldType fieldType, int value)
Returns a copy of this date with the specified field set to a new value.
YearMonthDay withFieldAdded(DurationFieldType fieldType, int amount)
Returns a copy of this date with the value of the specified field increased.
YearMonthDay withMonthOfYear(int monthOfYear)
Returns a copy of this date with the month of year field updated.
YearMonthDay withPeriodAdded(ReadablePeriod period, int scalar)
Returns a copy of this date with the specified period added.
YearMonthDay withYear(int year)
Returns a copy of this date with the year field updated.
YearMonthDay.Property year()
Get the year field property which provides access to advanced functionality.
Protected Methods
DateTimeField getField(int index, Chronology chrono)
Gets the field for a specific index in the chronology specified.
[Expand]
Inherited Methods
From class org.joda.time.base.BasePartial
From class org.joda.time.base.AbstractPartial
From class java.lang.Object
From interface java.lang.Comparable
From interface org.joda.time.ReadablePartial

Constants

public static final int DAY_OF_MONTH

The index of the dayOfMonth field in the field array

Constant Value: 2 (0x00000002)

public static final int MONTH_OF_YEAR

The index of the monthOfYear field in the field array

Constant Value: 1 (0x00000001)

public static final int YEAR

The index of the year field in the field array

Constant Value: 0 (0x00000000)

Public Constructors

public YearMonthDay ()

Constructs a YearMonthDay with the current date, using ISOChronology in the default zone to extract the fields.

The constructor uses the default time zone, resulting in the local time being initialised. Once the constructor is complete, all further calculations are performed without reference to a timezone (by switching to UTC).

public YearMonthDay (DateTimeZone zone)

Constructs a YearMonthDay with the current date, using ISOChronology in the specified zone to extract the fields.

The constructor uses the specified time zone to obtain the current date. Once the constructor is complete, all further calculations are performed without reference to a timezone (by switching to UTC).

Parameters
zone the zone to use, null means default zone

public YearMonthDay (Chronology chronology)

Constructs a YearMonthDay with the current date, using the specified chronology and zone to extract the fields.

The constructor uses the time zone of the chronology specified. Once the constructor is complete, all further calculations are performed without reference to a timezone (by switching to UTC).

Parameters
chronology the chronology, null means ISOChronology in the default zone

public YearMonthDay (long instant)

Constructs a YearMonthDay extracting the partial fields from the specified milliseconds using the ISOChronology in the default zone.

The constructor uses the default time zone, resulting in the local time being initialised. Once the constructor is complete, all further calculations are performed without reference to a timezone (by switching to UTC).

Parameters
instant the milliseconds from 1970-01-01T00:00:00Z

public YearMonthDay (long instant, Chronology chronology)

Constructs a YearMonthDay extracting the partial fields from the specified milliseconds using the chronology provided.

The constructor uses the time zone of the chronology specified. Once the constructor is complete, all further calculations are performed without reference to a timezone (by switching to UTC).

Parameters
instant the milliseconds from 1970-01-01T00:00:00Z
chronology the chronology, null means ISOChronology in the default zone

public YearMonthDay (Object instant)

Constructs a YearMonthDay from an Object that represents a time.

The recognised object types are defined in ConverterManager and include ReadableInstant, String, Calendar and Date. The String formats are described by dateOptionalTimeParser().

The chronology used will be derived from the object, defaulting to ISO.

NOTE: Prior to v1.3 the string format was described by dateTimeParser(). Time ony strings are now rejected.

Parameters
instant the datetime object, null means now
Throws
IllegalArgumentException if the instant is invalid

public YearMonthDay (Object instant, Chronology chronology)

Constructs a YearMonthDay from an Object that represents a time, using the specified chronology.

The recognised object types are defined in ConverterManager and include ReadableInstant, String, Calendar and Date. The String formats are described by dateOptionalTimeParser().

The constructor uses the time zone of the chronology specified. Once the constructor is complete, all further calculations are performed without reference to a timezone (by switching to UTC). The specified chronology overrides that of the object.

NOTE: Prior to v1.3 the string format was described by dateTimeParser(). Time only strings are now rejected.

Parameters
instant the datetime object, null means now
chronology the chronology, null means ISO default
Throws
IllegalArgumentException if the instant is invalid

public YearMonthDay (int year, int monthOfYear, int dayOfMonth)

Constructs a YearMonthDay with specified time field values using ISOChronology in the default zone.

The constructor uses the no time zone initialising the fields as provided. Once the constructor is complete, all further calculations are performed without reference to a timezone (by switching to UTC).

Parameters
year the year
monthOfYear the month of the year
dayOfMonth the day of the month

public YearMonthDay (int year, int monthOfYear, int dayOfMonth, Chronology chronology)

Constructs a YearMonthDay with specified time field values.

The constructor uses the time zone of the chronology specified. Once the constructor is complete, all further calculations are performed without reference to a timezone (by switching to UTC).

Parameters
year the year
monthOfYear the month of the year
dayOfMonth the day of the month
chronology the chronology, null means ISOChronology in the default zone

Public Methods

public YearMonthDay.Property dayOfMonth ()

Get the day of month field property which provides access to advanced functionality.

Returns
  • the day of month property

public static YearMonthDay fromCalendarFields (Calendar calendar)

Constructs a YearMonthDay from a java.util.Calendar using exactly the same field values avoiding any time zone effects.

Each field is queried from the Calendar and assigned to the YearMonthDay. This is useful if you have been using the Calendar as a local date, ignoing the zone.

This factory method ignores the type of the calendar and always creates a YearMonthDay with ISO chronology. It is expected that you will only pass in instances of GregorianCalendar however this is not validated.

Parameters
calendar the Calendar to extract fields from
Returns
  • the created YearMonthDay
Throws
IllegalArgumentException if the calendar is null
IllegalArgumentException if the date is invalid for the ISO chronology

public static YearMonthDay fromDateFields (Date date)

Constructs a YearMonthDay from a java.util.Date using exactly the same field values avoiding any time zone effects.

Each field is queried from the Date and assigned to the YearMonthDay. This is useful if you have been using the Date as a local date, ignoing the zone.

This factory method always creates a YearMonthDay with ISO chronology.

Parameters
date the Date to extract fields from
Returns
  • the created YearMonthDay
Throws
IllegalArgumentException if the calendar is null
IllegalArgumentException if the date is invalid for the ISO chronology

public int getDayOfMonth ()

Get the day of month field value.

Returns
  • the day of month

public DateTimeFieldType getFieldType (int index)

Gets the field type at the specified index.

Parameters
index the index to retrieve
Returns
  • the field at the specified index
Throws
IndexOutOfBoundsException if the index is invalid

public DateTimeFieldType[] getFieldTypes ()

Gets an array of the field type of each of the fields that this partial supports.

The fields are returned largest to smallest, Year, Month, Day

Returns
  • the array of field types (cloned), largest to smallest

public int getMonthOfYear ()

Get the month of year field value.

Returns
  • the month of year

public int getYear ()

Get the year field value.

Returns
  • the year

public YearMonthDay minus (ReadablePeriod period)

Returns a copy of this date with the specified period taken away.

If the amount is zero or null, then this is returned.

This method is typically used to subtract complex period instances. Subtracting one field is best achieved using methods like minusYears(int).

Parameters
period the period to reduce this instant by
Returns
  • a copy of this instance with the period taken away
Throws
ArithmeticException if the new datetime exceeds the capacity of a long

public YearMonthDay minusDays (int days)

Returns a copy of this date minus the specified number of days.

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

The following three lines are identical in effect:

 YearMonthDay subtracted = dt.minusDays(6);
 YearMonthDay subtracted = dt.minus(Period.days(6));
 YearMonthDay subtracted = dt.withFieldAdded(DurationFieldType.days(), -6);
 

Parameters
days the amount of days to subtract, may be negative
Returns
  • the new datetime minus the increased days

public YearMonthDay minusMonths (int months)

Returns a copy of this date minus the specified number of months.

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

The following three lines are identical in effect:

 YearMonthDay subtracted = dt.minusMonths(6);
 YearMonthDay subtracted = dt.minus(Period.months(6));
 YearMonthDay subtracted = dt.withFieldAdded(DurationFieldType.months(), -6);
 

Parameters
months the amount of months to subtract, may be negative
Returns
  • the new datetime minus the increased months

public YearMonthDay minusYears (int years)

Returns a copy of this date minus the specified number of years.

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

The following three lines are identical in effect:

 YearMonthDay subtracted = dt.minusYears(6);
 YearMonthDay subtracted = dt.minus(Period.years(6));
 YearMonthDay subtracted = dt.withFieldAdded(DurationFieldType.years(), -6);
 

Parameters
years the amount of years to subtract, may be negative
Returns
  • the new datetime minus the increased years

public YearMonthDay.Property monthOfYear ()

Get the month of year field property which provides access to advanced functionality.

Returns
  • the month of year property

public YearMonthDay plus (ReadablePeriod period)

Returns a copy of this date with the specified period added.

If the amount is zero or null, then this is returned.

This method is typically used to add complex period instances. Adding one field is best achieved using methods like plusYears(int).

Parameters
period the duration to add to this one, null means zero
Returns
  • a copy of this instance with the period added
Throws
ArithmeticException if the new datetime exceeds the capacity of a long

public YearMonthDay plusDays (int days)

Returns a copy of this date plus the specified number of days.

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

The following three lines are identical in effect:

 YearMonthDay added = dt.plusDays(6);
 YearMonthDay added = dt.plus(Period.days(6));
 YearMonthDay added = dt.withFieldAdded(DurationFieldType.days(), 6);
 

Parameters
days the amount of days to add, may be negative
Returns
  • the new date plus the increased days

public YearMonthDay plusMonths (int months)

Returns a copy of this date plus the specified number of months.

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

The following three lines are identical in effect:

 YearMonthDay added = dt.plusMonths(6);
 YearMonthDay added = dt.plus(Period.months(6));
 YearMonthDay added = dt.withFieldAdded(DurationFieldType.months(), 6);
 

Parameters
months the amount of months to add, may be negative
Returns
  • the new date plus the increased months

public YearMonthDay plusYears (int years)

Returns a copy of this date plus the specified number of years.

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

The following three lines are identical in effect:

 YearMonthDay added = dt.plusYears(6);
 YearMonthDay added = dt.plus(Period.years(6));
 YearMonthDay added = dt.withFieldAdded(DurationFieldType.years(), 6);
 

Parameters
years the amount of years to add, may be negative
Returns
  • the new date plus the increased years

public YearMonthDay.Property property (DateTimeFieldType type)

Gets the property object for the specified type, which contains many useful methods.

Parameters
type the field type to get the property for
Returns
  • the property object
Throws
IllegalArgumentException if the field is null or unsupported

public int size ()

Gets the number of fields in this partial.

Returns
  • the field count

public DateMidnight toDateMidnight (DateTimeZone zone)

Converts this object to a DateMidnight.

Parameters
zone the zone to get the DateMidnight in, null means default
Returns
  • the DateMidnight instance

public DateMidnight toDateMidnight ()

Converts this object to a DateMidnight in the default time zone.

Returns
  • the DateMidnight instance in the default zone

public DateTime toDateTime (TimeOfDay time)

Converts this object to a DateTime using a TimeOfDay to fill in the missing fields and using the default time zone. This instance is immutable and unaffected by this method call.

The resulting chronology is determined by the chronology of this YearMonthDay plus the time zone. The chronology of the time is ignored - only the field values are used.

Parameters
time the time of day to use, null means current time
Returns
  • the DateTime instance

public DateTime toDateTime (TimeOfDay time, DateTimeZone zone)

Converts this object to a DateTime using a TimeOfDay to fill in the missing fields. This instance is immutable and unaffected by this method call.

The resulting chronology is determined by the chronology of this YearMonthDay plus the time zone. The chronology of the time is ignored - only the field values are used.

Parameters
time the time of day to use, null means current time
zone the zone to get the DateTime in, null means default
Returns
  • the DateTime instance

public DateTime toDateTimeAtCurrentTime ()

Converts this partial to a full datetime using the default time zone setting the date fields from this instance and the time fields from the current time.

Returns
  • this date as a datetime with the time as the current time

public DateTime toDateTimeAtCurrentTime (DateTimeZone zone)

Converts this partial to a full datetime using the specified time zone setting the date fields from this instance and the time fields from the current time.

This method uses the chronology from this instance plus the time zone specified.

Parameters
zone the zone to use, null means default
Returns
  • this date as a datetime with the time as the current time

public DateTime toDateTimeAtMidnight (DateTimeZone zone)

Converts this YearMonthDay to a full datetime at midnight using the specified time zone.

This method uses the chronology from this instance plus the time zone specified.

Parameters
zone the zone to use, null means default
Returns
  • this date as a datetime at midnight

public DateTime toDateTimeAtMidnight ()

Converts this YearMonthDay to a full datetime at midnight using the default time zone.

Returns
  • this date as a datetime at midnight

public Interval toInterval ()

Converts this object to an Interval representing the whole day in the default time zone.

Returns
  • a interval over the day

public Interval toInterval (DateTimeZone zone)

Converts this object to an Interval representing the whole day.

Parameters
zone the zone to get the Interval in, null means default
Returns
  • a interval over the day

public LocalDate toLocalDate ()

Converts this object to a LocalDate with the same date and chronology.

Returns
  • a LocalDate with the same date and chronology

public String toString ()

Output the date in the ISO8601 format YYYY-MM-DD.

Returns
  • ISO8601 formatted string

public YearMonthDay withChronologyRetainFields (Chronology newChronology)

Returns a copy of this date with the specified chronology. This instance is immutable and unaffected by this method call.

This method retains the values of the fields, thus the result will typically refer to a different instant.

The time zone of the specified chronology is ignored, as YearMonthDay operates without a time zone.

Parameters
newChronology the new chronology, null means ISO
Returns
  • a copy of this datetime with a different chronology
Throws
IllegalArgumentException if the values are invalid for the new chronology

public YearMonthDay withDayOfMonth (int dayOfMonth)

Returns a copy of this date with the day of month field updated.

YearMonthDay is immutable, so there are no set methods. Instead, this method returns a new instance with the value of day of month changed.

Parameters
dayOfMonth the day of month to set
Returns
  • a copy of this object with the field set
Throws
IllegalArgumentException if the value is invalid

public YearMonthDay withField (DateTimeFieldType fieldType, int value)

Returns a copy of this date with the specified field set to a new value.

For example, if the field type is dayOfMonth then the day would be changed in the returned instance.

These three lines are equivalent:

 YearMonthDay updated = ymd.withField(DateTimeFieldType.dayOfMonth(), 6);
 YearMonthDay updated = ymd.dayOfMonth().setCopy(6);
 YearMonthDay updated = ymd.property(DateTimeFieldType.dayOfMonth()).setCopy(6);
 

Parameters
fieldType the field type to set, not null
value the value to set
Returns
  • a copy of this instance with the field set
Throws
IllegalArgumentException if the value is null or invalid

public YearMonthDay withFieldAdded (DurationFieldType fieldType, int amount)

Returns a copy of this date with the value of the specified field increased.

If the addition is zero, then this is returned.

These three lines are equivalent:

 YearMonthDay added = ymd.withFieldAdded(DurationFieldType.days(), 6);
 YearMonthDay added = ymd.plusDays(6);
 YearMonthDay added = ymd.dayOfMonth().addToCopy(6);
 

Parameters
fieldType the field type to add to, not null
amount the amount to add
Returns
  • a copy of this instance with the field updated
Throws
IllegalArgumentException if the value is null or invalid
ArithmeticException if the new datetime exceeds the capacity

public YearMonthDay withMonthOfYear (int monthOfYear)

Returns a copy of this date with the month of year field updated.

YearMonthDay is immutable, so there are no set methods. Instead, this method returns a new instance with the value of month of year changed.

Parameters
monthOfYear the month of year to set
Returns
  • a copy of this object with the field set
Throws
IllegalArgumentException if the value is invalid

public YearMonthDay withPeriodAdded (ReadablePeriod period, int scalar)

Returns a copy of this date with the specified period added.

If the addition is zero, then this is returned. Fields in the period that aren't present in the partial are ignored.

This method is typically used to add multiple copies of complex period instances. Adding one field is best achieved using methods like withFieldAdded(DurationFieldType, int) or plusYears(int).

Parameters
period the period to add to this one, null means zero
scalar the amount of times to add, such as -1 to subtract once
Returns
  • a copy of this instance with the period added
Throws
ArithmeticException if the new datetime exceeds the capacity

public YearMonthDay withYear (int year)

Returns a copy of this date with the year field updated.

YearMonthDay is immutable, so there are no set methods. Instead, this method returns a new instance with the value of year changed.

Parameters
year the year to set
Returns
  • a copy of this object with the field set
Throws
IllegalArgumentException if the value is invalid

public YearMonthDay.Property year ()

Get the year field property which provides access to advanced functionality.

Returns
  • the year property

Protected Methods

protected DateTimeField getField (int index, Chronology chrono)

Gets the field for a specific index in the chronology specified.

This method must not use any instance variables.

Parameters
index the index to retrieve
chrono the chronology to use
Returns
  • the field