public final class

DateTime

extends BaseDateTime
implements Serializable ReadableDateTime
java.lang.Object
   ↳ org.joda.time.base.AbstractInstant
     ↳ org.joda.time.base.AbstractDateTime
       ↳ org.joda.time.base.BaseDateTime
         ↳ org.joda.time.DateTime

Class Overview

DateTime is the standard implementation of an unmodifiable datetime class.

DateTime is the most widely used implementation of ReadableInstant. As with all instants, it represents an exact point on the time-line, but limited to the precision of milliseconds. A DateTime calculates its fields with respect to a time zone.

Internally, the class holds two pieces of data. Firstly, it holds the datetime as milliseconds from the Java epoch of 1970-01-01T00:00:00Z. Secondly, it holds a Chronology which determines how the millisecond instant value is converted into the date time fields. The default Chronology is ISOChronology which is the agreed international standard and compatible with the modern Gregorian calendar.

Each individual field can be queried in two ways:

  • getHourOfDay()
  • hourOfDay().get()
The second technique also provides access to other useful methods on the field:
  • numeric value
  • text value
  • short text value
  • maximum/minimum values
  • add/subtract
  • set
  • rounding

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

See Also

Summary

Nested Classes
class DateTime.Property DateTime.Property binds a DateTime to a DateTimeField allowing powerful datetime functionality to be easily accessed. 
Public Constructors
DateTime()
Constructs an instance set to the current system millisecond time using ISOChronology in the default time zone.
DateTime(DateTimeZone zone)
Constructs an instance set to the current system millisecond time using ISOChronology in the specified time zone.
DateTime(Chronology chronology)
Constructs an instance set to the current system millisecond time using the specified chronology.
DateTime(long instant)
Constructs an instance set to the milliseconds from 1970-01-01T00:00:00Z using ISOChronology in the default time zone.
DateTime(long instant, DateTimeZone zone)
Constructs an instance set to the milliseconds from 1970-01-01T00:00:00Z using ISOChronology in the specified time zone.
DateTime(long instant, Chronology chronology)
Constructs an instance set to the milliseconds from 1970-01-01T00:00:00Z using the specified chronology.
DateTime(Object instant)
Constructs an instance from an Object that represents a datetime.
DateTime(Object instant, DateTimeZone zone)
Constructs an instance from an Object that represents a datetime, forcing the time zone to that specified.
DateTime(Object instant, Chronology chronology)
Constructs an instance from an Object that represents a datetime, using the specified chronology.
DateTime(int year, int monthOfYear, int dayOfMonth, int hourOfDay, int minuteOfHour, int secondOfMinute, int millisOfSecond)
Constructs an instance from datetime field values using ISOChronology in the default time zone.
DateTime(int year, int monthOfYear, int dayOfMonth, int hourOfDay, int minuteOfHour, int secondOfMinute, int millisOfSecond, DateTimeZone zone)
Constructs an instance from datetime field values using ISOChronology in the specified time zone.
DateTime(int year, int monthOfYear, int dayOfMonth, int hourOfDay, int minuteOfHour, int secondOfMinute, int millisOfSecond, Chronology chronology)
Constructs an instance from datetime field values using the specified chronology.
Public Methods
DateTime.Property centuryOfEra()
Get the century of era property which provides access to advanced functionality.
DateTime.Property dayOfMonth()
Get the day of month property which provides access to advanced functionality.
DateTime.Property dayOfWeek()
Get the day of week property which provides access to advanced functionality.
DateTime.Property dayOfYear()
Get the day of year property which provides access to advanced functionality.
DateTime.Property era()
Get the era property which provides access to advanced functionality.
DateTime.Property hourOfDay()
Get the hour of day field property which provides access to advanced functionality.
DateTime.Property millisOfDay()
Get the millis of day property which provides access to advanced functionality.
DateTime.Property millisOfSecond()
Get the millis of second property which provides access to advanced functionality.
DateTime minus(ReadablePeriod period)
Returns a copy of this datetime with the specified period taken away.
DateTime minus(long duration)
Returns a copy of this datetime with the specified duration taken away.
DateTime minus(ReadableDuration duration)
Returns a copy of this datetime with the specified duration taken away.
DateTime minusDays(int days)
Returns a copy of this datetime minus the specified number of days.
DateTime minusHours(int hours)
Returns a copy of this datetime minus the specified number of hours.
DateTime minusMillis(int millis)
Returns a copy of this datetime minus the specified number of millis.
DateTime minusMinutes(int minutes)
Returns a copy of this datetime minus the specified number of minutes.
DateTime minusMonths(int months)
Returns a copy of this datetime minus the specified number of months.
DateTime minusSeconds(int seconds)
Returns a copy of this datetime minus the specified number of seconds.
DateTime minusWeeks(int weeks)
Returns a copy of this datetime minus the specified number of weeks.
DateTime minusYears(int years)
Returns a copy of this datetime minus the specified number of years.
DateTime.Property minuteOfDay()
Get the minute of day property which provides access to advanced functionality.
DateTime.Property minuteOfHour()
Get the minute of hour field property which provides access to advanced functionality.
DateTime.Property monthOfYear()
Get the month of year property which provides access to advanced functionality.
DateTime plus(ReadablePeriod period)
Returns a copy of this datetime with the specified period added.
DateTime plus(long duration)
Returns a copy of this datetime with the specified duration added.
DateTime plus(ReadableDuration duration)
Returns a copy of this datetime with the specified duration added.
DateTime plusDays(int days)
Returns a copy of this datetime plus the specified number of days.
DateTime plusHours(int hours)
Returns a copy of this datetime plus the specified number of hours.
DateTime plusMillis(int millis)
Returns a copy of this datetime plus the specified number of millis.
DateTime plusMinutes(int minutes)
Returns a copy of this datetime plus the specified number of minutes.
DateTime plusMonths(int months)
Returns a copy of this datetime plus the specified number of months.
DateTime plusSeconds(int seconds)
Returns a copy of this datetime plus the specified number of seconds.
DateTime plusWeeks(int weeks)
Returns a copy of this datetime plus the specified number of weeks.
DateTime plusYears(int years)
Returns a copy of this datetime plus the specified number of years.
DateTime.Property property(DateTimeFieldType type)
Gets the property object for the specified type, which contains many useful methods.
DateTime.Property secondOfDay()
Get the second of day property which provides access to advanced functionality.
DateTime.Property secondOfMinute()
Get the second of minute field property which provides access to advanced functionality.
DateMidnight toDateMidnight()
Converts this object to a DateMidnight using the same millis and chronology.
DateTime toDateTime(DateTimeZone zone)
Get this object as a DateTime, returning this if possible.
DateTime toDateTime(Chronology chronology)
Get this object as a DateTime, returning this if possible.
DateTime toDateTime()
Get this object as a DateTime by returning this.
DateTime toDateTimeISO()
Get this object as a DateTime using ISOChronology in the default zone, returning this if possible.
LocalDate toLocalDate()
Converts this object to a LocalDate with the same date and chronology.
LocalDateTime toLocalDateTime()
Converts this object to a LocalDateTime with the same datetime and chronology.
LocalTime toLocalTime()
Converts this object to a LocalTime with the same time and chronology.
TimeOfDay toTimeOfDay()
This method is deprecated. Use LocalTime instead of TimeOfDay
YearMonthDay toYearMonthDay()
This method is deprecated. Use LocalDate instead of YearMonthDay
DateTime.Property weekOfWeekyear()
Get the week of a week based year property which provides access to advanced functionality.
DateTime.Property weekyear()
Get the year of a week based year property which provides access to advanced functionality.
DateTime withCenturyOfEra(int centuryOfEra)
Returns a copy of this datetime with the century of era field updated.
DateTime withChronology(Chronology newChronology)
Returns a copy of this datetime with a different chronology.
DateTime withDate(int year, int monthOfYear, int dayOfMonth)
Returns a copy of this datetime with the specified date, retaining the time fields.
DateTime withDayOfMonth(int dayOfMonth)
Returns a copy of this datetime with the day of month field updated.
DateTime withDayOfWeek(int dayOfWeek)
Returns a copy of this datetime with the day of week field updated.
DateTime withDayOfYear(int dayOfYear)
Returns a copy of this datetime with the day of year field updated.
DateTime withDurationAdded(long durationToAdd, int scalar)
Returns a copy of this datetime with the specified duration added.
DateTime withDurationAdded(ReadableDuration durationToAdd, int scalar)
Returns a copy of this datetime with the specified duration added.
DateTime withEra(int era)
Returns a copy of this datetime with the era field updated.
DateTime withField(DateTimeFieldType fieldType, int value)
Returns a copy of this datetime with the specified field set to a new value.
DateTime withFieldAdded(DurationFieldType fieldType, int amount)
Returns a copy of this datetime with the value of the specified field increased.
DateTime withFields(ReadablePartial partial)
Returns a copy of this datetime with the partial set of fields replacing those from this instance.
DateTime withHourOfDay(int hour)
Returns a copy of this datetime with the hour of day field updated.
DateTime withMillis(long newMillis)
Returns a copy of this datetime with different millis.
DateTime withMillisOfDay(int millis)
Returns a copy of this datetime with the millis of day field updated.
DateTime withMillisOfSecond(int millis)
Returns a copy of this datetime with the millis of second field updated.
DateTime withMinuteOfHour(int minute)
Returns a copy of this datetime with the minute of hour updated.
DateTime withMonthOfYear(int monthOfYear)
Returns a copy of this datetime with the month of year field updated.
DateTime withPeriodAdded(ReadablePeriod period, int scalar)
Returns a copy of this datetime with the specified period added.
DateTime withSecondOfMinute(int second)
Returns a copy of this datetime with the second of minute field updated.
DateTime withTime(int hourOfDay, int minuteOfHour, int secondOfMinute, int millisOfSecond)
Returns a copy of this datetime with the specified time, retaining the date fields.
DateTime withWeekOfWeekyear(int weekOfWeekyear)
Returns a copy of this datetime with the week of weekyear field updated.
DateTime withWeekyear(int weekyear)
Returns a copy of this datetime with the weekyear field updated.
DateTime withYear(int year)
Returns a copy of this datetime with the year field updated.
DateTime withYearOfCentury(int yearOfCentury)
Returns a copy of this datetime with the year of century field updated.
DateTime withYearOfEra(int yearOfEra)
Returns a copy of this datetime with the year of era field updated.
DateTime withZone(DateTimeZone newZone)
Returns a copy of this datetime with a different time zone, preserving the millisecond instant.
DateTime withZoneRetainFields(DateTimeZone newZone)
Returns a copy of this datetime with a different time zone, preserving the field values.
DateTime.Property year()
Get the year property which provides access to advanced functionality.
DateTime.Property yearOfCentury()
Get the year of century property which provides access to advanced functionality.
DateTime.Property yearOfEra()
Get the year of era property which provides access to advanced functionality.
[Expand]
Inherited Methods
From class org.joda.time.base.BaseDateTime
From class org.joda.time.base.AbstractDateTime
From class org.joda.time.base.AbstractInstant
From class java.lang.Object
From interface java.lang.Comparable
From interface org.joda.time.ReadableDateTime
From interface org.joda.time.ReadableInstant

Public Constructors

public DateTime ()

Constructs an instance set to the current system millisecond time using ISOChronology in the default time zone.

public DateTime (DateTimeZone zone)

Constructs an instance set to the current system millisecond time using ISOChronology in the specified time zone.

If the specified time zone is null, the default zone is used.

Parameters
zone the time zone, null means default zone

public DateTime (Chronology chronology)

Constructs an instance set to the current system millisecond time using the specified chronology.

If the chronology is null, ISOChronology in the default time zone is used.

Parameters
chronology the chronology, null means ISOChronology in default zone

public DateTime (long instant)

Constructs an instance set to the milliseconds from 1970-01-01T00:00:00Z using ISOChronology in the default time zone.

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

public DateTime (long instant, DateTimeZone zone)

Constructs an instance set to the milliseconds from 1970-01-01T00:00:00Z using ISOChronology in the specified time zone.

If the specified time zone is null, the default zone is used.

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

public DateTime (long instant, Chronology chronology)

Constructs an instance set to the milliseconds from 1970-01-01T00:00:00Z using the specified chronology.

If the chronology is null, ISOChronology in the default time zone is used.

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

public DateTime (Object instant)

Constructs an instance from an Object that represents a datetime.

If the object implies a chronology (such as GregorianCalendar does), then that chronology will be used. Otherwise, ISO default is used. Thus if a GregorianCalendar is passed in, the chronology used will be GJ, but if a Date is passed in the chronology will be ISO.

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

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

public DateTime (Object instant, DateTimeZone zone)

Constructs an instance from an Object that represents a datetime, forcing the time zone to that specified.

If the object implies a chronology (such as GregorianCalendar does), then that chronology will be used, but with the time zone adjusted. Otherwise, ISO is used in the specified time zone. If the specified time zone is null, the default zone is used. Thus if a GregorianCalendar is passed in, the chronology used will be GJ, but if a Date is passed in the chronology will be ISO.

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

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

public DateTime (Object instant, Chronology chronology)

Constructs an instance from an Object that represents a datetime, using the specified chronology.

If the chronology is null, ISO in the default time zone is used. Any chronology implied by the object (such as GregorianCalendar does) is ignored.

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

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

public DateTime (int year, int monthOfYear, int dayOfMonth, int hourOfDay, int minuteOfHour, int secondOfMinute, int millisOfSecond)

Constructs an instance from datetime field values using ISOChronology in the default time zone.

Parameters
year the year
monthOfYear the month of the year
dayOfMonth the day of the month
hourOfDay the hour of the day
minuteOfHour the minute of the hour
secondOfMinute the second of the minute
millisOfSecond the millisecond of the second

public DateTime (int year, int monthOfYear, int dayOfMonth, int hourOfDay, int minuteOfHour, int secondOfMinute, int millisOfSecond, DateTimeZone zone)

Constructs an instance from datetime field values using ISOChronology in the specified time zone.

If the specified time zone is null, the default zone is used.

Parameters
year the year
monthOfYear the month of the year
dayOfMonth the day of the month
hourOfDay the hour of the day
minuteOfHour the minute of the hour
secondOfMinute the second of the minute
millisOfSecond the millisecond of the second
zone the time zone, null means default time zone

public DateTime (int year, int monthOfYear, int dayOfMonth, int hourOfDay, int minuteOfHour, int secondOfMinute, int millisOfSecond, Chronology chronology)

Constructs an instance from datetime field values using the specified chronology.

If the chronology is null, ISOChronology in the default time zone is used.

Parameters
year the year
monthOfYear the month of the year
dayOfMonth the day of the month
hourOfDay the hour of the day
minuteOfHour the minute of the hour
secondOfMinute the second of the minute
millisOfSecond the millisecond of the second
chronology the chronology, null means ISOChronology in default zone

Public Methods

public DateTime.Property centuryOfEra ()

Get the century of era property which provides access to advanced functionality.

Returns
  • the year of era property

public DateTime.Property dayOfMonth ()

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

Returns
  • the day of month property

public DateTime.Property dayOfWeek ()

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

Returns
  • the day of week property

public DateTime.Property dayOfYear ()

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

Returns
  • the day of year property

public DateTime.Property era ()

Get the era property which provides access to advanced functionality.

Returns
  • the era property

public DateTime.Property hourOfDay ()

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

Returns
  • the hour of day property

public DateTime.Property millisOfDay ()

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

Returns
  • the millis of day property

public DateTime.Property millisOfSecond ()

Get the millis of second property which provides access to advanced functionality.

Returns
  • the millis of second property

public DateTime minus (ReadablePeriod period)

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

This method will subtract each element of the period one by one, from largest to smallest, adjusting the datetime to be accurate between each.

Thus, subtracting a period of one month and one day from 2007-05-31 will work as follows: First subtract one month and adjust, resulting in 2007-04-30 Then subtract one day and adjust, resulting in 2007-04-29. Note that the day has been adjusted by two.

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

If the amount is zero or null, then this is returned. This datetime instance is immutable and unaffected by this method call.

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

public DateTime minus (long duration)

Returns a copy of this datetime with the specified duration taken away.

If the amount is zero or null, then this is returned. This datetime instance is immutable and unaffected by this method call.

Parameters
duration the duration, in millis, to reduce this instant by
Returns
  • a copy of this datetime with the duration taken away
Throws
ArithmeticException if the new datetime exceeds the capacity of a long

public DateTime minus (ReadableDuration duration)

Returns a copy of this datetime with the specified duration taken away.

If the amount is zero or null, then this is returned. This datetime instance is immutable and unaffected by this method call.

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

public DateTime minusDays (int days)

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

The calculation will do its best to only change the day field retaining the same time of day. However, in certain circumstances, typically daylight savings cutover, it may be necessary to alter the time fields.

In spring an hour is typically removed. If subtracting one day results in the time being within the cutover then the time is adjusted to be within summer time. For example, if the cutover is from 01:59 to 03:00 and the result of this method would have been 02:30, then the result will be adjusted to 03:30.

The following three lines are identical in effect:

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

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

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

public DateTime minusHours (int hours)

Returns a copy of this datetime minus the specified number of hours.

The calculation will subtract a duration equivalent to the number of hours expressed in milliseconds.

For example, if a spring daylight savings cutover is from 01:59 to 03:00 then subtracting one hour from 03:30 will result in 01:30. This is a duration of one hour earlier, even though the hour field value changed from 3 to 1.

The following three lines are identical in effect:

 DateTime subtracted = dt.minusHours(6);
 DateTime subtracted = dt.minus(Period.hours(6));
 DateTime subtracted = dt.withFieldAdded(DurationFieldType.hours(), -6);
 

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

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

public DateTime minusMillis (int millis)

Returns a copy of this datetime minus the specified number of millis.

The calculation will subtract a duration equivalent to the number of milliseconds.

The following three lines are identical in effect:

 DateTime subtracted = dt.minusMillis(6);
 DateTime subtracted = dt.minus(Period.millis(6));
 DateTime subtracted = dt.withFieldAdded(DurationFieldType.millis(), -6);
 

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

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

public DateTime minusMinutes (int minutes)

Returns a copy of this datetime minus the specified number of minutes.

The calculation will subtract a duration equivalent to the number of minutes expressed in milliseconds.

The following three lines are identical in effect:

 DateTime subtracted = dt.minusMinutes(6);
 DateTime subtracted = dt.minus(Period.minutes(6));
 DateTime subtracted = dt.withFieldAdded(DurationFieldType.minutes(), -6);
 

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

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

public DateTime minusMonths (int months)

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

The calculation will do its best to only change the month field retaining the same day of month. However, in certain circumstances, it may be necessary to alter smaller fields. For example, 2007-05-31 minus one month cannot result in 2007-04-31, so the day of month is adjusted to 2007-04-30.

The following three lines are identical in effect:

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

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

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

public DateTime minusSeconds (int seconds)

Returns a copy of this datetime minus the specified number of seconds.

The calculation will subtract a duration equivalent to the number of seconds expressed in milliseconds.

The following three lines are identical in effect:

 DateTime subtracted = dt.minusSeconds(6);
 DateTime subtracted = dt.minus(Period.seconds(6));
 DateTime subtracted = dt.withFieldAdded(DurationFieldType.seconds(), -6);
 

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

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

public DateTime minusWeeks (int weeks)

Returns a copy of this datetime minus the specified number of weeks.

The calculation operates as if it were subtracting the equivalent in days.

The following three lines are identical in effect:

 DateTime subtracted = dt.minusWeeks(6);
 DateTime subtracted = dt.minus(Period.weeks(6));
 DateTime subtracted = dt.withFieldAdded(DurationFieldType.weeks(), -6);
 

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

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

public DateTime minusYears (int years)

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

The calculation will do its best to only change the year field retaining the same month of year. However, in certain circumstances, it may be necessary to alter smaller fields. For example, 2008-02-29 minus one year cannot result in 2007-02-29, so the day of month is adjusted to 2007-02-28.

The following three lines are identical in effect:

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

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

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

public DateTime.Property minuteOfDay ()

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

Returns
  • the minute of day property

public DateTime.Property minuteOfHour ()

Get the minute of hour field property which provides access to advanced functionality.

Returns
  • the minute of hour property

public DateTime.Property monthOfYear ()

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

Returns
  • the month of year property

public DateTime plus (ReadablePeriod period)

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

This method will add each element of the period one by one, from largest to smallest, adjusting the datetime to be accurate between each.

Thus, adding a period of one month and one day to 2007-03-31 will work as follows: First add one month and adjust, resulting in 2007-04-30 Then add one day and adjust, resulting in 2007-05-01.

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

If the amount is zero or null, then this is returned. This datetime instance is immutable and unaffected by this method call.

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

public DateTime plus (long duration)

Returns a copy of this datetime with the specified duration added.

If the amount is zero or null, then this is returned. This datetime instance is immutable and unaffected by this method call.

Parameters
duration the duration, in millis, to add to this one
Returns
  • a copy of this datetime with the duration added
Throws
ArithmeticException if the new datetime exceeds the capacity of a long

public DateTime plus (ReadableDuration duration)

Returns a copy of this datetime with the specified duration added.

If the amount is zero or null, then this is returned. This datetime instance is immutable and unaffected by this method call.

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

public DateTime plusDays (int days)

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

The calculation will do its best to only change the day field retaining the same time of day. However, in certain circumstances, typically daylight savings cutover, it may be necessary to alter the time fields.

In spring an hour is typically removed. If adding one day results in the time being within the cutover then the time is adjusted to be within summer time. For example, if the cutover is from 01:59 to 03:00 and the result of this method would have been 02:30, then the result will be adjusted to 03:30.

The following three lines are identical in effect:

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

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

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

public DateTime plusHours (int hours)

Returns a copy of this datetime plus the specified number of hours.

The calculation will add a duration equivalent to the number of hours expressed in milliseconds.

For example, if a spring daylight savings cutover is from 01:59 to 03:00 then adding one hour to 01:30 will result in 03:30. This is a duration of one hour later, even though the hour field value changed from 1 to 3.

The following three lines are identical in effect:

 DateTime added = dt.plusHours(6);
 DateTime added = dt.plus(Period.hours(6));
 DateTime added = dt.withFieldAdded(DurationFieldType.hours(), 6);
 

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

Parameters
hours the amount of hours to add, may be negative
Returns
  • the new datetime plus the increased hours

public DateTime plusMillis (int millis)

Returns a copy of this datetime plus the specified number of millis.

The calculation will add a duration equivalent to the number of milliseconds.

The following three lines are identical in effect:

 DateTime added = dt.plusMillis(6);
 DateTime added = dt.plus(Period.millis(6));
 DateTime added = dt.withFieldAdded(DurationFieldType.millis(), 6);
 

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

Parameters
millis the amount of millis to add, may be negative
Returns
  • the new datetime plus the increased millis

public DateTime plusMinutes (int minutes)

Returns a copy of this datetime plus the specified number of minutes.

The calculation will add a duration equivalent to the number of minutes expressed in milliseconds.

The following three lines are identical in effect:

 DateTime added = dt.plusMinutes(6);
 DateTime added = dt.plus(Period.minutes(6));
 DateTime added = dt.withFieldAdded(DurationFieldType.minutes(), 6);
 

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

Parameters
minutes the amount of minutes to add, may be negative
Returns
  • the new datetime plus the increased minutes

public DateTime plusMonths (int months)

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

The calculation will do its best to only change the month field retaining the same day of month. However, in certain circumstances, it may be necessary to alter smaller fields. For example, 2007-03-31 plus one month cannot result in 2007-04-31, so the day of month is adjusted to 2007-04-30.

The following three lines are identical in effect:

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

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

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

public DateTime plusSeconds (int seconds)

Returns a copy of this datetime plus the specified number of seconds.

The calculation will add a duration equivalent to the number of seconds expressed in milliseconds.

The following three lines are identical in effect:

 DateTime added = dt.plusSeconds(6);
 DateTime added = dt.plus(Period.seconds(6));
 DateTime added = dt.withFieldAdded(DurationFieldType.seconds(), 6);
 

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

Parameters
seconds the amount of seconds to add, may be negative
Returns
  • the new datetime plus the increased seconds

public DateTime plusWeeks (int weeks)

Returns a copy of this datetime plus the specified number of weeks.

The calculation operates as if it were adding the equivalent in days.

The following three lines are identical in effect:

 DateTime added = dt.plusWeeks(6);
 DateTime added = dt.plus(Period.weeks(6));
 DateTime added = dt.withFieldAdded(DurationFieldType.weeks(), 6);
 

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

Parameters
weeks the amount of weeks to add, may be negative
Returns
  • the new datetime plus the increased weeks

public DateTime plusYears (int years)

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

The calculation will do its best to only change the year field retaining the same month of year. However, in certain circumstances, it may be necessary to alter smaller fields. For example, 2008-02-29 plus one year cannot result in 2009-02-29, so the day of month is adjusted to 2009-02-28.

The following three lines are identical in effect:

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

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

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

public DateTime.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 chronology for
Returns
  • the property object
Throws
IllegalArgumentException if the field is null or unsupported

public DateTime.Property secondOfDay ()

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

Returns
  • the second of day property

public DateTime.Property secondOfMinute ()

Get the second of minute field property which provides access to advanced functionality.

Returns
  • the second of minute property

public DateMidnight toDateMidnight ()

Converts this object to a DateMidnight using the same millis and chronology.

Returns
  • a DateMidnight using the same millis and chronology

public DateTime toDateTime (DateTimeZone zone)

Get this object as a DateTime, returning this if possible.

Parameters
zone time zone to apply, or default if null
Returns
  • a DateTime using the same millis

public DateTime toDateTime (Chronology chronology)

Get this object as a DateTime, returning this if possible.

Parameters
chronology chronology to apply, or ISOChronology if null
Returns
  • a DateTime using the same millis

public DateTime toDateTime ()

Get this object as a DateTime by returning this.

Returns
  • this

public DateTime toDateTimeISO ()

Get this object as a DateTime using ISOChronology in the default zone, returning this if possible.

Returns
  • a DateTime using the same millis

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 LocalDateTime toLocalDateTime ()

Converts this object to a LocalDateTime with the same datetime and chronology.

Returns
  • a LocalDateTime with the same datetime and chronology

public LocalTime toLocalTime ()

Converts this object to a LocalTime with the same time and chronology.

Returns
  • a LocalTime with the same time and chronology

public TimeOfDay toTimeOfDay ()

This method is deprecated.
Use LocalTime instead of TimeOfDay

Converts this object to a TimeOfDay using the same millis and chronology.

Returns
  • a TimeOfDay using the same millis and chronology

public YearMonthDay toYearMonthDay ()

This method is deprecated.
Use LocalDate instead of YearMonthDay

Converts this object to a YearMonthDay using the same millis and chronology.

Returns
  • a YearMonthDay using the same millis and chronology

public DateTime.Property weekOfWeekyear ()

Get the week of a week based year property which provides access to advanced functionality.

Returns
  • the week of a week based year property

public DateTime.Property weekyear ()

Get the year of a week based year property which provides access to advanced functionality.

Returns
  • the year of a week based year property

public DateTime withCenturyOfEra (int centuryOfEra)

Returns a copy of this datetime with the century of era field updated.

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

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

public DateTime withChronology (Chronology newChronology)

Returns a copy of this datetime with a different chronology.

The returned object will be either be a new instance or this. Only the chronology will change, the millis are kept.

Parameters
newChronology the new chronology, null means ISO default
Returns
  • a copy of this datetime with a different chronology

public DateTime withDate (int year, int monthOfYear, int dayOfMonth)

Returns a copy of this datetime with the specified date, retaining the time fields.

If the date is already the date passed in, then this is returned.

To set a single field use the properties, for example:

 DateTime set = monthOfYear().setCopy(6);
 

Parameters
year the new year value
monthOfYear the new monthOfYear value
dayOfMonth the new dayOfMonth value
Returns
  • a copy of this datetime with a different date
Throws
IllegalArgumentException if any value if invalid

public DateTime withDayOfMonth (int dayOfMonth)

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

DateTime 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 DateTime withDayOfWeek (int dayOfWeek)

Returns a copy of this datetime with the day of week field updated.

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

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

public DateTime withDayOfYear (int dayOfYear)

Returns a copy of this datetime with the day of year field updated.

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

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

public DateTime withDurationAdded (long durationToAdd, int scalar)

Returns a copy of this datetime with the specified duration added.

If the addition is zero, then this is returned.

Parameters
durationToAdd the duration to add to this one
scalar the amount of times to add, such as -1 to subtract once
Returns
  • a copy of this datetime with the duration added
Throws
ArithmeticException if the new datetime exceeds the capacity of a long

public DateTime withDurationAdded (ReadableDuration durationToAdd, int scalar)

Returns a copy of this datetime with the specified duration added.

If the addition is zero, then this is returned.

Parameters
durationToAdd the duration 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 datetime with the duration added
Throws
ArithmeticException if the new datetime exceeds the capacity of a long

public DateTime withEra (int era)

Returns a copy of this datetime with the era field updated.

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

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

public DateTime withField (DateTimeFieldType fieldType, int value)

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

For example, if the field type is hourOfDay then the hour of day field would be changed in the returned instance. If the field type is null, then this is returned.

These three lines are equivalent:

 DateTime updated = dt.withField(DateTimeFieldType.dayOfMonth(), 6);
 DateTime updated = dt.dayOfMonth().setCopy(6);
 DateTime updated = dt.property(DateTimeFieldType.dayOfMonth()).setCopy(6);
 

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

public DateTime withFieldAdded (DurationFieldType fieldType, int amount)

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

If the addition is zero or the field is null, then this is returned.

These three lines are equivalent:

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

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

public DateTime withFields (ReadablePartial partial)

Returns a copy of this datetime with the partial set of fields replacing those from this instance.

For example, if the partial is a TimeOfDay then the time fields would be changed in the returned instance. If the partial is null, then this is returned.

Parameters
partial the partial set of fields to apply to this datetime, null ignored
Returns
  • a copy of this datetime with a different set of fields
Throws
IllegalArgumentException if any value is invalid

public DateTime withHourOfDay (int hour)

Returns a copy of this datetime with the hour of day field updated.

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

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

public DateTime withMillis (long newMillis)

Returns a copy of this datetime with different millis.

The returned object will be either be a new instance or this. Only the millis will change, the chronology and time zone are kept.

Parameters
newMillis the new millis, from 1970-01-01T00:00:00Z
Returns
  • a copy of this datetime with different millis

public DateTime withMillisOfDay (int millis)

Returns a copy of this datetime with the millis of day field updated.

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

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

public DateTime withMillisOfSecond (int millis)

Returns a copy of this datetime with the millis of second field updated.

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

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

public DateTime withMinuteOfHour (int minute)

Returns a copy of this datetime with the minute of hour updated.

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

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

public DateTime withMonthOfYear (int monthOfYear)

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

DateTime 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 DateTime withPeriodAdded (ReadablePeriod period, int scalar)

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

If the addition is zero, then this is returned.

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 datetime with the period added
Throws
ArithmeticException if the new datetime exceeds the capacity of a long

public DateTime withSecondOfMinute (int second)

Returns a copy of this datetime with the second of minute field updated.

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

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

public DateTime withTime (int hourOfDay, int minuteOfHour, int secondOfMinute, int millisOfSecond)

Returns a copy of this datetime with the specified time, retaining the date fields.

If the time is already the time passed in, then this is returned.

To set a single field use the properties, for example:

 DateTime set = dt.hourOfDay().setCopy(6);
 

Parameters
hourOfDay the hour of the day
minuteOfHour the minute of the hour
secondOfMinute the second of the minute
millisOfSecond the millisecond of the second
Returns
  • a copy of this datetime with a different time
Throws
IllegalArgumentException if any value if invalid

public DateTime withWeekOfWeekyear (int weekOfWeekyear)

Returns a copy of this datetime with the week of weekyear field updated.

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

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

public DateTime withWeekyear (int weekyear)

Returns a copy of this datetime with the weekyear field updated.

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

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

public DateTime withYear (int year)

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

DateTime 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 DateTime withYearOfCentury (int yearOfCentury)

Returns a copy of this datetime with the year of century field updated.

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

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

public DateTime withYearOfEra (int yearOfEra)

Returns a copy of this datetime with the year of era field updated.

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

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

public DateTime withZone (DateTimeZone newZone)

Returns a copy of this datetime with a different time zone, preserving the millisecond instant.

This method is useful for finding the local time in another timezone. For example, if this instant holds 12:30 in Europe/London, the result from this method with Europe/Paris would be 13:30.

The returned object will be a new instance of the same implementation type. This method changes the time zone, and does not change the millisecond instant, with the effect that the field values usually change. The returned object will be either be a new instance or this.

Parameters
newZone the new time zone
Returns
  • a copy of this datetime with a different time zone

public DateTime withZoneRetainFields (DateTimeZone newZone)

Returns a copy of this datetime with a different time zone, preserving the field values.

This method is useful for finding the millisecond time in another timezone. For example, if this instant holds 12:30 in Europe/London (ie. 12:30Z), the result from this method with Europe/Paris would be 12:30 (ie. 11:30Z).

The returned object will be a new instance of the same implementation type. This method changes the time zone and the millisecond instant to keep the field values the same. The returned object will be either be a new instance or this.

Parameters
newZone the new time zone, null means default
Returns
  • a copy of this datetime with a different time zone

public DateTime.Property year ()

Get the year property which provides access to advanced functionality.

Returns
  • the year property

public DateTime.Property yearOfCentury ()

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

Returns
  • the year of era property

public DateTime.Property yearOfEra ()

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

Returns
  • the year of era property