org.joda.time
Class Instant

java.lang.Object
  extended byorg.joda.time.base.AbstractInstant
      extended byorg.joda.time.Instant
All Implemented Interfaces:
Comparable, ReadableInstant, Serializable

public final class Instant
extends AbstractInstant
implements ReadableInstant, Serializable

Instant is the standard implementation of a fully immutable instant in time.

Instant is an implementation of ReadableInstant. As with all instants, it represents an exact point on the time-line, but limited to the precision of milliseconds. An Instant should be used to represent a point in time irrespective of any other factor, such as chronology or time zone.

Internally, the class holds one piece of data, the instant as milliseconds from the Java epoch of 1970-01-01T00:00:00Z.

For example, an Instant can be used to compare two DateTime objects irrespective of chronology or time zone.

 boolean sameInstant = dt1.toInstant().equals(dt2.toInstant());
 
Note that the following code will also perform the same check:
 boolean sameInstant = dt1.isEqual(dt2);
 

Instant is thread-safe and immutable.

Since:
1.0
Author:
Stephen Colebourne
See Also:
Serialized Form

Constructor Summary
Instant()
          Constructs an instance set to the current system millisecond time.
Instant(long instant)
          Constructs an instance set to the milliseconds from 1970-01-01T00:00:00Z.
Instant(Object instant)
          Constructs an instance from an Object that represents a datetime.
 
Method Summary
 Chronology getChronology()
          Gets the chronology of the instant, which is ISO in the UTC zone.
 long getMillis()
          Gets the milliseconds of the instant.
 Instant minus(long duration)
          Gets a copy of this instant with the specified duration taken away.
 Instant minus(ReadableDuration duration)
          Gets a copy of this instant with the specified duration taken away.
 Instant plus(long duration)
          Gets a copy of this instant with the specified duration added.
 Instant plus(ReadableDuration duration)
          Gets a copy of this instant with the specified duration added.
 DateTime toDateTime()
          Get this object as a DateTime using ISOChronology in the default zone.
 DateTime toDateTimeISO()
          Deprecated. Use toDateTime() as it is identical
 Instant toInstant()
          Get this object as an Instant by returning this.
 MutableDateTime toMutableDateTime()
          Get this object as a MutableDateTime using ISOChronology in the default zone.
 MutableDateTime toMutableDateTimeISO()
          Deprecated. Use toMutableDateTime() as it is identical
 Instant withDurationAdded(long durationToAdd, int scalar)
          Gets a copy of this instant with the specified duration added.
 Instant withDurationAdded(ReadableDuration durationToAdd, int scalar)
          Gets a copy of this instant with the specified duration added.
 Instant withMillis(long newMillis)
          Gets a copy of this instant with different millis.
 
Methods inherited from class org.joda.time.base.AbstractInstant
compareTo, equals, get, get, getZone, hashCode, isAfter, isAfter, isAfterNow, isBefore, isBefore, isBeforeNow, isEqual, isEqual, isEqualNow, isSupported, toDate, toDateTime, toDateTime, toMutableDateTime, toMutableDateTime, toString, toString
 
Methods inherited from class java.lang.Object
getClass, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface org.joda.time.ReadableInstant
compareTo, equals, get, getZone, hashCode, isAfter, isBefore, isEqual, isSupported, toString
 

Constructor Detail

Instant

public Instant()
Constructs an instance set to the current system millisecond time.


Instant

public Instant(long instant)
Constructs an instance set to the milliseconds from 1970-01-01T00:00:00Z.

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

Instant

public Instant(Object instant)
Constructs an instance from an Object that represents a datetime.

The recognised object types are defined in ConverterManager and include String, Calendar and Date.

Parameters:
instant - the datetime object, null means now
Throws:
IllegalArgumentException - if the instant is invalid
Method Detail

toInstant

public Instant toInstant()
Get this object as an Instant by returning this.

Specified by:
toInstant in interface ReadableInstant
Overrides:
toInstant in class AbstractInstant
Returns:
this

withMillis

public Instant withMillis(long newMillis)
Gets a copy of this instant with different millis.

The returned object will be either be a new Instant or this.

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

withDurationAdded

public Instant withDurationAdded(long durationToAdd,
                                 int scalar)
Gets a copy of this instant 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 instant with the duration added
Throws:
ArithmeticException - if the new instant exceeds the capacity of a long

withDurationAdded

public Instant withDurationAdded(ReadableDuration durationToAdd,
                                 int scalar)
Gets a copy of this instant 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 instant with the duration added
Throws:
ArithmeticException - if the new instant exceeds the capacity of a long

plus

public Instant plus(long duration)
Gets a copy of this instant with the specified duration added.

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

Parameters:
duration - the duration to add to this one
Returns:
a copy of this instant with the duration added
Throws:
ArithmeticException - if the new instant exceeds the capacity of a long

plus

public Instant plus(ReadableDuration duration)
Gets a copy of this instant with the specified duration added.

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

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

minus

public Instant minus(long duration)
Gets a copy of this instant with the specified duration taken away.

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

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

minus

public Instant minus(ReadableDuration duration)
Gets a copy of this instant with the specified duration taken away.

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

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

getMillis

public long getMillis()
Gets the milliseconds of the instant.

Specified by:
getMillis in interface ReadableInstant
Returns:
the number of milliseconds since 1970-01-01T00:00:00Z

getChronology

public Chronology getChronology()
Gets the chronology of the instant, which is ISO in the UTC zone.

This method returns ISOChronology.getInstanceUTC() which corresponds to the definition of the Java epoch 1970-01-01T00:00:00Z.

Specified by:
getChronology in interface ReadableInstant
Returns:
ISO in the UTC zone

toDateTime

public DateTime toDateTime()
Get this object as a DateTime using ISOChronology in the default zone.

This method returns a DateTime object in the default zone. This differs from the similarly named method on DateTime, DateMidnight or MutableDateTime which retains the time zone. The difference is because Instant really represents a time without a zone, thus calling this method we really have no zone to 'retain' and hence expect to switch to the default zone.

This method definition preserves compatability with earlier versions of Joda-Time.

Overrides:
toDateTime in class AbstractInstant
Returns:
a DateTime using the same millis

toDateTimeISO

public DateTime toDateTimeISO()
Deprecated. Use toDateTime() as it is identical

Get this object as a DateTime using ISOChronology in the default zone. This method is identical to toDateTime().

This method returns a DateTime object in the default zone. This differs from the similarly named method on DateTime, DateMidnight or MutableDateTime which retains the time zone. The difference is because Instant really represents a time without a zone, thus calling this method we really have no zone to 'retain' and hence expect to switch to the default zone.

This method definition preserves compatability with earlier versions of Joda-Time.

Overrides:
toDateTimeISO in class AbstractInstant
Returns:
a DateTime using the same millis with ISOChronology

toMutableDateTime

public MutableDateTime toMutableDateTime()
Get this object as a MutableDateTime using ISOChronology in the default zone.

This method returns a MutableDateTime object in the default zone. This differs from the similarly named method on DateTime, DateMidnight or MutableDateTime which retains the time zone. The difference is because Instant really represents a time without a zone, thus calling this method we really have no zone to 'retain' and hence expect to switch to the default zone.

This method definition preserves compatability with earlier versions of Joda-Time.

Overrides:
toMutableDateTime in class AbstractInstant
Returns:
a MutableDateTime using the same millis

toMutableDateTimeISO

public MutableDateTime toMutableDateTimeISO()
Deprecated. Use toMutableDateTime() as it is identical

Get this object as a MutableDateTime using ISOChronology in the default zone. This method is identical to toMutableDateTime().

This method returns a MutableDateTime object in the default zone. This differs from the similarly named method on DateTime, DateMidnight or MutableDateTime which retains the time zone. The difference is because Instant really represents a time without a zone, thus calling this method we really have no zone to 'retain' and hence expect to switch to the default zone.

This method definition preserves compatability with earlier versions of Joda-Time.

Overrides:
toMutableDateTimeISO in class AbstractInstant
Returns:
a MutableDateTime using the same millis with ISOChronology


Copyright © 2002-2008 Joda.org. All Rights Reserved.