public final class MonthDay extends BasePartial implements ReadablePartial, java.io.Serializable
NOTE: This class only supports the two fields listed above. It is impossible to query any other fields, such as dayOfWeek or centuryOfEra.
Calculations on MonthDay are performed using a Chronology
.
This chronology is set to be in the UTC time zone for all calculations.
One use case for this class is to store a birthday without the year (to avoid storing the age of the person). This class can be used as the gMonthDay type in XML Schema.
Each individual field can be queried in two ways:
getMonthOfYear()
monthOfYear().get()
monthOfYear().get()
monthOfYear().getAsText()
monthOfYear().getAsShortText()
monthOfYear().getMaximumValue()
monthOfYear().addToCopy()
monthOfYear().setCopy()
MonthDay is thread-safe and immutable, provided that the Chronology is as well. All standard Chronology classes supplied are thread-safe and immutable.
Modifier and Type | Class and Description |
---|---|
static class |
MonthDay.Property
The property class for
MonthDay . |
Modifier and Type | Field and Description |
---|---|
static int |
DAY_OF_MONTH
The index of the day field in the field array
|
static int |
MONTH_OF_YEAR
The index of the monthOfYear field in the field array
|
Constructor and Description |
---|
MonthDay()
Constructs a MonthDay with the current monthOfYear, using ISOChronology in
the default zone to extract the fields.
|
MonthDay(Chronology chronology)
Constructs a MonthDay with the current month-day, using the specified chronology
and zone to extract the fields.
|
MonthDay(DateTimeZone zone)
Constructs a MonthDay with the current month-day, using ISOChronology in
the specified zone to extract the fields.
|
MonthDay(int monthOfYear,
int dayOfMonth)
Constructs a MonthDay with specified year and month
using
ISOChronology . |
MonthDay(int monthOfYear,
int dayOfMonth,
Chronology chronology)
Constructs an instance set to the specified monthOfYear and dayOfMonth
using the specified chronology, whose zone is ignored.
|
MonthDay(long instant)
Constructs a MonthDay extracting the partial fields from the specified
milliseconds using the ISOChronology in the default zone.
|
MonthDay(long instant,
Chronology chronology)
Constructs a MonthDay extracting the partial fields from the specified
milliseconds using the chronology provided.
|
MonthDay(java.lang.Object instant)
Constructs a MonthDay from an Object that represents some form of time.
|
MonthDay(java.lang.Object instant,
Chronology chronology)
Constructs a MonthDay from an Object that represents some form of time,
using the specified chronology.
|
Modifier and Type | Method and Description |
---|---|
MonthDay.Property |
dayOfMonth()
Get the day of month field property which provides access to advanced functionality.
|
static MonthDay |
fromCalendarFields(java.util.Calendar calendar)
Constructs a MonthDay from a
java.util.Calendar
using exactly the same field values avoiding any time zone effects. |
static MonthDay |
fromDateFields(java.util.Date date)
Constructs a MonthDay 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.
|
MonthDay |
minus(ReadablePeriod period)
Returns a copy of this month-day with the specified period taken away.
|
MonthDay |
minusDays(int days)
Returns a copy of this month-day minus the specified number of months.
|
MonthDay |
minusMonths(int months)
Returns a copy of this month-day minus the specified number of months.
|
MonthDay.Property |
monthOfYear()
Get the month of year field property which provides access to advanced functionality.
|
static MonthDay |
now()
Obtains a
MonthDay set to the current system millisecond time
using ISOChronology in the default time zone. |
static MonthDay |
now(Chronology chronology)
Obtains a
MonthDay set to the current system millisecond time
using the specified chronology. |
static MonthDay |
now(DateTimeZone zone)
Obtains a
MonthDay set to the current system millisecond time
using ISOChronology in the specified time zone. |
static MonthDay |
parse(java.lang.String str)
Parses a
MonthDay from the specified string. |
static MonthDay |
parse(java.lang.String str,
DateTimeFormatter formatter)
Parses a
MonthDay from the specified string using a formatter. |
MonthDay |
plus(ReadablePeriod period)
Returns a copy of this month-day with the specified period added.
|
MonthDay |
plusDays(int days)
Returns a copy of this month-day plus the specified number of days.
|
MonthDay |
plusMonths(int months)
Returns a copy of this month-day plus the specified number of months.
|
MonthDay.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, which is two.
|
LocalDate |
toLocalDate(int year)
Converts this object to a LocalDate with the same month-day and chronology.
|
java.lang.String |
toString()
Output the month-day in ISO8601 format (--MM-dd).
|
java.lang.String |
toString(java.lang.String pattern)
Output the month-day using the specified format pattern.
|
java.lang.String |
toString(java.lang.String pattern,
java.util.Locale locale)
Output the month-day using the specified format pattern.
|
MonthDay |
withChronologyRetainFields(Chronology newChronology)
Returns a copy of this month-day with the specified chronology.
|
MonthDay |
withDayOfMonth(int dayOfMonth)
Returns a copy of this month-day with the day of month field updated.
|
MonthDay |
withField(DateTimeFieldType fieldType,
int value)
Returns a copy of this month-day with the specified field set to a new value.
|
MonthDay |
withFieldAdded(DurationFieldType fieldType,
int amount)
Returns a copy of this month-day with the value of the specified field increased.
|
MonthDay |
withMonthOfYear(int monthOfYear)
Returns a copy of this month-day with the month of year field updated.
|
MonthDay |
withPeriodAdded(ReadablePeriod period,
int scalar)
Returns a copy of this month-day with the specified period added.
|
getChronology, getValue, getValues
compareTo, equals, get, getField, getFields, hashCode, indexOf, isAfter, isBefore, isEqual, isSupported, toDateTime, toString
equals, get, getChronology, getField, getValue, hashCode, isSupported, toDateTime
public static final int MONTH_OF_YEAR
public static final int DAY_OF_MONTH
public MonthDay()
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 time-zone (by switching to UTC).
now()
public MonthDay(DateTimeZone zone)
The constructor uses the specified time zone to obtain the current month-day. Once the constructor is complete, all further calculations are performed without reference to a time-zone (by switching to UTC).
zone
- the zone to use, null means default zonenow(DateTimeZone)
public MonthDay(Chronology chronology)
The constructor uses the time zone of the chronology specified. Once the constructor is complete, all further calculations are performed without reference to a time-zone (by switching to UTC).
chronology
- the chronology, null means ISOChronology in the default zonenow(Chronology)
public MonthDay(long instant)
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 time-zone (by switching to UTC).
instant
- the milliseconds from 1970-01-01T00:00:00Zpublic MonthDay(long instant, Chronology chronology)
The constructor uses the time zone of the chronology specified. Once the constructor is complete, all further calculations are performed without reference to a time-zone (by switching to UTC).
instant
- the milliseconds from 1970-01-01T00:00:00Zchronology
- the chronology, null means ISOChronology in the default zonepublic MonthDay(java.lang.Object instant)
The recognised object types are defined in
ConverterManager
and
include ReadableInstant, String, Calendar and Date.
The String formats are described by ISODateTimeFormat.localDateParser()
.
The chronology used will be derived from the object, defaulting to ISO.
instant
- the date-time object, null means nowjava.lang.IllegalArgumentException
- if the instant is invalidpublic MonthDay(java.lang.Object instant, Chronology chronology)
The recognised object types are defined in
ConverterManager
and
include ReadableInstant, String, Calendar and Date.
The String formats are described by ISODateTimeFormat.localDateParser()
.
The constructor uses the time zone of the chronology specified. Once the constructor is complete, all further calculations are performed without reference to a time-zone (by switching to UTC). The specified chronology overrides that of the object.
instant
- the date-time object, null means nowchronology
- the chronology, null means ISO defaultjava.lang.IllegalArgumentException
- if the instant is invalidpublic MonthDay(int monthOfYear, int dayOfMonth)
ISOChronology
.
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 time-zone (by switching to UTC).
monthOfYear
- the month of the yeardayOfMonth
- the day of the monthpublic MonthDay(int monthOfYear, int dayOfMonth, Chronology chronology)
If the chronology is null, ISOChronology
is used.
The constructor uses the time zone of the chronology specified. Once the constructor is complete, all further calculations are performed without reference to a time-zone (by switching to UTC).
monthOfYear
- the month of the yeardayOfMonth
- the day of the monthchronology
- the chronology, null means ISOChronology in the default zonepublic static MonthDay now()
MonthDay
set to the current system millisecond time
using ISOChronology
in the default time zone.
The resulting object does not use the zone.public static MonthDay now(DateTimeZone zone)
MonthDay
set to the current system millisecond time
using ISOChronology
in the specified time zone.
The resulting object does not use the zone.zone
- the time zone, not nullpublic static MonthDay now(Chronology chronology)
MonthDay
set to the current system millisecond time
using the specified chronology.
The resulting object does not use the zone.chronology
- the chronology, not nullpublic static MonthDay parse(java.lang.String str)
MonthDay
from the specified string.
This uses ISODateTimeFormat.localDateParser()
or the format --MM-dd
.
str
- the string to parse, not nullpublic static MonthDay parse(java.lang.String str, DateTimeFormatter formatter)
MonthDay
from the specified string using a formatter.str
- the string to parse, not nullformatter
- the formatter to use, not nullpublic static MonthDay fromCalendarFields(java.util.Calendar calendar)
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 MonthDay.
This factory method ignores the type of the calendar and always
creates a MonthDay with ISO chronology. It is expected that you
will only pass in instances of GregorianCalendar
however
this is not validated.
calendar
- the Calendar to extract fields fromjava.lang.IllegalArgumentException
- if the calendar is nulljava.lang.IllegalArgumentException
- if the monthOfYear or dayOfMonth is invalid for the ISO chronologypublic static MonthDay fromDateFields(java.util.Date date)
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 MonthDay.
This factory method always creates a MonthDay with ISO chronology.
date
- the Date to extract fields fromjava.lang.IllegalArgumentException
- if the calendar is nulljava.lang.IllegalArgumentException
- if the monthOfYear or dayOfMonth is invalid for the ISO chronologypublic int size()
size
in interface ReadablePartial
public DateTimeFieldType getFieldType(int index)
getFieldType
in interface ReadablePartial
getFieldType
in class AbstractPartial
index
- the index to retrievejava.lang.IndexOutOfBoundsException
- if the index is invalidpublic DateTimeFieldType[] getFieldTypes()
The fields are returned largest to smallest, Month, Day.
getFieldTypes
in class AbstractPartial
public MonthDay withChronologyRetainFields(Chronology newChronology)
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 MonthDay operates without a time zone.
newChronology
- the new chronology, null means ISOjava.lang.IllegalArgumentException
- if the values are invalid for the new chronologypublic MonthDay withField(DateTimeFieldType fieldType, int value)
For example, if the field type is dayOfMonth
then the day
would be changed in the returned instance.
These three lines are equivalent:
MonthDay updated = md.withField(DateTimeFieldType.dayOfMonth(), 6); MonthDay updated = md.dayOfMonth().setCopy(6); MonthDay updated = md.property(DateTimeFieldType.dayOfMonth()).setCopy(6);
fieldType
- the field type to set, not nullvalue
- the value to setjava.lang.IllegalArgumentException
- if the value is null or invalidpublic MonthDay withFieldAdded(DurationFieldType fieldType, int amount)
If the addition is zero, then this
is returned.
These three lines are equivalent:
MonthDay added = md.withFieldAdded(DurationFieldType.days(), 6); MonthDay added = md.plusDays(6); MonthDay added = md.dayOfMonth().addToCopy(6);
fieldType
- the field type to add to, not nullamount
- the amount to addjava.lang.IllegalArgumentException
- if the value is null or invalidjava.lang.ArithmeticException
- if the new date-time exceeds the capacitypublic MonthDay withPeriodAdded(ReadablePeriod period, int scalar)
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 plusMonths(int)
.
period
- the period to add to this one, null means zeroscalar
- the amount of times to add, such as -1 to subtract oncejava.lang.ArithmeticException
- if the new date-time exceeds the capacitypublic MonthDay plus(ReadablePeriod period)
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 plusMonths(int)
.
period
- the duration to add to this one, null means zerojava.lang.ArithmeticException
- if the new month-day exceeds the capacitypublic MonthDay plusMonths(int months)
This month-day instance is immutable and unaffected by this method call. The month will wrap at the end of the year from December to January. The day will be adjusted to the last valid value if necessary.
The following three lines are identical in effect:
MonthDay added = md.plusMonths(6); MonthDay added = md.plus(Period.months(6)); MonthDay added = md.withFieldAdded(DurationFieldType.months(), 6);
months
- the amount of months to add, may be negativepublic MonthDay plusDays(int days)
This month-day instance is immutable and unaffected by this method call. The month will wrap at the end of the year from December to January.
If the number of days added requires wrapping past the end of February, the wrapping will be calculated assuming February has 29 days.
The following three lines are identical in effect:
MonthDay added = md.plusDays(6); MonthDay added = md.plus(Period.days(6)); MonthDay added = md.withFieldAdded(DurationFieldType.days(), 6);
days
- the amount of days to add, may be negativepublic MonthDay minus(ReadablePeriod period)
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 minusMonths(int)
.
period
- the period to reduce this instant byjava.lang.ArithmeticException
- if the new month-day exceeds the capacitypublic MonthDay minusMonths(int months)
This MonthDay instance is immutable and unaffected by this method call. The month will wrap at the end of the year from January to December. The day will be adjusted to the last valid value if necessary.
The following three lines are identical in effect:
MonthDay subtracted = md.minusMonths(6); MonthDay subtracted = md.minus(Period.months(6)); MonthDay subtracted = md.withFieldAdded(DurationFieldType.months(), -6);
months
- the amount of months to subtract, may be negativepublic MonthDay minusDays(int days)
This month-day instance is immutable and unaffected by this method call. The month will wrap at the end of the year from January to December.
The following three lines are identical in effect:
MonthDay subtracted = md.minusDays(6); MonthDay subtracted = md.minus(Period.days(6)); MonthDay subtracted = md.withFieldAdded(DurationFieldType.days(), -6);
days
- the amount of days to subtract, may be negativepublic LocalDate toLocalDate(int year)
year
- the year to use, valid for chronologypublic int getMonthOfYear()
public int getDayOfMonth()
public MonthDay withMonthOfYear(int monthOfYear)
MonthDay is immutable, so there are no set methods. Instead, this method returns a new instance with the value of month of year changed.
monthOfYear
- the month of year to setjava.lang.IllegalArgumentException
- if the value is invalidpublic MonthDay withDayOfMonth(int dayOfMonth)
MonthDay is immutable, so there are no set methods. Instead, this method returns a new instance with the value of day of month changed.
dayOfMonth
- the day of month to setjava.lang.IllegalArgumentException
- if the value is invalidpublic MonthDay.Property property(DateTimeFieldType type)
type
- the field type to get the property forjava.lang.IllegalArgumentException
- if the field is null or unsupportedpublic MonthDay.Property monthOfYear()
public MonthDay.Property dayOfMonth()
public java.lang.String toString()
toString
in interface ReadablePartial
toString
in class java.lang.Object
public java.lang.String toString(java.lang.String pattern)
toString
in class BasePartial
pattern
- the pattern specification, null means use toString
DateTimeFormat
public java.lang.String toString(java.lang.String pattern, java.util.Locale locale) throws java.lang.IllegalArgumentException
toString
in class BasePartial
pattern
- the pattern specification, null means use toString
locale
- Locale to use, null means defaultjava.lang.IllegalArgumentException
DateTimeFormat
"Copyright © 2010 - 2020 Adobe Systems Incorporated. All Rights Reserved"