Struct Instant
Represents an instant on the global timeline, with nanosecond resolution.
Since 1.0.x
Availability net6.0, netstandard2.0
Inherited Members
Namespace: NodaTime
Assembly: NodaTime.dll
Syntax
[TypeConverter(typeof(InstantTypeConverter))]
public readonly struct Instant : IEquatable<Instant>, IComparable<Instant>, IFormattable, IComparable, IXmlSerializable
Remarks
An Instant has no concept of a particular time zone or calendar: it simply represents a point in time that can be globally agreedupon.
Equality and ordering comparisons are defined in the natural way, with earlier points on the timeline being considered "less than" later points.
Properties
MaxValue
Represents the largest possible Instant.
Since 1.0.x
Availability net6.0, netstandard2.0
Declaration
public static readonly Instant MaxValue { get; }
Property Value
Type  Description 

Instant 
Remarks
This value is equivalent to 99991231T23:59:59.999999999Z
MinValue
Represents the smallest possible Instant.
Since 1.0.x
Availability net6.0, netstandard2.0
Declaration
public static readonly Instant MinValue { get; }
Property Value
Type  Description 

Instant 
Remarks
This value is equivalent to 99980101T00:00:00Z
Methods
Add(Instant, Duration)
Adds a duration to an instant. Friendly alternative to
operator+()
.
Since 1.0.x
Availability net6.0, netstandard2.0
Declaration
public static Instant Add(Instant left, Duration right)
Parameters
Type  Name  Description 

Instant  left  The left hand side of the operator. 
Duration  right  The right hand side of the operator. 
Returns
Type  Description 

Instant  A new Instant representing the sum of the given values. 
AddSchema(XmlSchemaSet)
Adds the XML schema type describing the structure of the Instant XML serialization to the given
xmlSchemaSet
.
Since 3.0.x
Availability net6.0, netstandard2.0
Declaration
public static XmlQualifiedName AddSchema(XmlSchemaSet xmlSchemaSet)
Parameters
Type  Name  Description 

XmlSchemaSet  xmlSchemaSet  The XML schema set provided by XmlSchemaExporter. 
Returns
Type  Description 

XmlQualifiedName  The qualified name of the schema type that was added to the xmlSchemaSet . 
CompareTo(Instant)
Compares the current object with another object of the same type.
See the type documentation for a description of ordering semantics.
Since 1.0.x
Availability net6.0, netstandard2.0
Declaration
public readonly int CompareTo(Instant other)
Parameters
Type  Name  Description 

Instant  other  An object to compare with this object. 
Returns
Type  Description  

Int32 
A 32bit signed integer that indicates the relative order of the objects being compared.
The return value has the following meanings:

Equals(Instant)
Indicates whether the value of this instant is equal to the value of the specified instant.
See the type documentation for a description of equality semantics.
Since 1.0.x
Availability net6.0, netstandard2.0
Declaration
public readonly bool Equals(Instant other)
Parameters
Type  Name  Description 

Instant  other  The value to compare with this instance. 
Returns
Type  Description 

Boolean 
true if the value of this instant is equal to the value of the other parameter;
otherwise, false.

Equals(Object)
Determines whether the specified Object is equal to this instance.
See the type documentation for a description of equality semantics.
Since 1.0.x
Availability net6.0, netstandard2.0
Declaration
public override readonly bool Equals(object obj)
Parameters
Type  Name  Description 

Object  obj  The Object to compare with this instance. 
Returns
Type  Description 

Boolean 
true if the specified Object is equal to this instance;
otherwise, false .

Overrides
FromDateTimeOffset(DateTimeOffset)
Converts a DateTimeOffset into a new Instant representing the same instant in time. Note that
the offset information is not preserved in the returned Instant.
Since 1.0.x
Availability net6.0, netstandard2.0
Declaration
public static Instant FromDateTimeOffset(DateTimeOffset dateTimeOffset)
Parameters
Type  Name  Description 

DateTimeOffset  dateTimeOffset  Date and time value with an offset. 
Returns
Type  Description 

Instant  An Instant value representing the same instant in time as the given DateTimeOffset. 
FromDateTimeUtc(DateTime)
Converts a DateTime into a new Instant representing the same instant in time.
Since 1.0.x
Availability net6.0, netstandard2.0
Declaration
public static Instant FromDateTimeUtc(DateTime dateTime)
Parameters
Type  Name  Description 

DateTime  dateTime  Date and time value which must have a Kind of Utc 
Returns
Type  Description 

Instant  An Instant value representing the same instant in time as the given universal DateTime. 
Exceptions
Type  Condition 

ArgumentException  dateTime is not of Kind
Utc. 
FromJulianDate(Double)
Converts a Julian Date representing the given number of days
since JulianEpoch (noon on January 1st, 4713 BCE in the Julian calendar)
into an Instant.
Since 2.0.x
Availability net6.0, netstandard2.0
Declaration
public static Instant FromJulianDate(double julianDate)
Parameters
Type  Name  Description 

Double  julianDate  The number of days since the Julian Epoch to convert into an Instant. 
Returns
Type  Description 

Instant  An Instant value which is julianDate days after the Julian Epoch. 
FromUnixTimeMilliseconds(Int64)
Initializes a new instance of the Instant struct based
on a number of milliseconds since the Unix epoch of (ISO) January 1st 1970, midnight, UTC.
Since 1.4.x
Availability net6.0, netstandard2.0
Declaration
public static Instant FromUnixTimeMilliseconds(long milliseconds)
Parameters
Type  Name  Description 

Int64  milliseconds  Number of milliseconds since the Unix epoch. May be negative (for instants before the epoch). 
Returns
Type  Description 

Instant  An Instant at exactly the given number of milliseconds since the Unix epoch. 
Exceptions
Type  Condition 

ArgumentOutOfRangeException  The constructed instant would be out of the range representable in Noda Time. 
FromUnixTimeSeconds(Int64)
Initializes a new instance of the Instant struct based
on a number of seconds since the Unix epoch of (ISO) January 1st 1970, midnight, UTC.
Since 1.4.x
Availability net6.0, netstandard2.0
Declaration
public static Instant FromUnixTimeSeconds(long seconds)
Parameters
Type  Name  Description 

Int64  seconds  Number of seconds since the Unix epoch. May be negative (for instants before the epoch). 
Returns
Type  Description 

Instant  An Instant at exactly the given number of seconds since the Unix epoch. 
Exceptions
Type  Condition 

ArgumentOutOfRangeException  The constructed instant would be out of the range representable in Noda Time. 
FromUnixTimeTicks(Int64)
Initializes a new instance of the Instant struct based
on a number of ticks since the Unix epoch of (ISO) January 1st 1970, midnight, UTC.
Since 1.4.x
Availability net6.0, netstandard2.0
Declaration
public static Instant FromUnixTimeTicks(long ticks)
Parameters
Type  Name  Description 

Int64  ticks  Number of ticks since the Unix epoch. May be negative (for instants before the epoch). 
Returns
Type  Description 

Instant  An Instant at exactly the given number of ticks since the Unix epoch. 
FromUtc(Int32, Int32, Int32, Int32, Int32)
Returns a new instant corresponding to the given UTC date and time in the ISO calendar.
In most cases applications should use ZonedDateTime to represent a date
and time, but this method is useful in some situations where an Instant is
required, such as time zone testing.
Since 1.0.x
Availability net6.0, netstandard2.0
Declaration
public static Instant FromUtc(int year, int monthOfYear, int dayOfMonth, int hourOfDay, int minuteOfHour)
Parameters
Type  Name  Description 

Int32  year  The year. This is the "absolute year", so a value of 0 means 1 BC, for example. 
Int32  monthOfYear  The month of year. 
Int32  dayOfMonth  The day of month. 
Int32  hourOfDay  The hour. 
Int32  minuteOfHour  The minute. 
Returns
Type  Description 

Instant  An Instant value representing the given date and time in UTC and the ISO calendar. 
FromUtc(Int32, Int32, Int32, Int32, Int32, Int32)
Returns a new instant corresponding to the given UTC date and
time in the ISO calendar. In most cases applications should
use ZonedDateTime
to represent a date and time, but this method is useful in some
situations where an Instant is required, such as time zone testing.
Since 1.0.x
Availability net6.0, netstandard2.0
Declaration
public static Instant FromUtc(int year, int monthOfYear, int dayOfMonth, int hourOfDay, int minuteOfHour, int secondOfMinute)
Parameters
Type  Name  Description 

Int32  year  The year. This is the "absolute year", so a value of 0 means 1 BC, for example. 
Int32  monthOfYear  The month of year. 
Int32  dayOfMonth  The day of month. 
Int32  hourOfDay  The hour. 
Int32  minuteOfHour  The minute. 
Int32  secondOfMinute  The second. 
Returns
Type  Description 

Instant  An Instant value representing the given date and time in UTC and the ISO calendar. 
GetHashCode()
Returns a hash code for this instance.
See the type documentation for a description of equality semantics.
Since 1.0.x
Availability net6.0, netstandard2.0
Declaration
public override readonly int GetHashCode()
Returns
Type  Description 

Int32  A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table. 
Overrides
InUtc()
Returns the ZonedDateTime representing the same point in time as this instant, in the UTC time
zone and ISO8601 calendar. This is a shortcut for calling InZone(DateTimeZone) with an
argument of Utc.
Since 1.0.x
Availability net6.0, netstandard2.0
Declaration
public readonly ZonedDateTime InUtc()
Returns
Type  Description 

ZonedDateTime  A ZonedDateTime for the same instant, in the UTC time zone and the ISO8601 calendar 
InZone(DateTimeZone)
Returns the ZonedDateTime representing the same point in time as this instant, in the
specified time zone and ISO8601 calendar.
Since 1.0.x
Availability net6.0, netstandard2.0
Declaration
public readonly ZonedDateTime InZone(DateTimeZone zone)
Parameters
Type  Name  Description 

DateTimeZone  zone  The time zone in which to represent this instant. 
Returns
Type  Description 

ZonedDateTime  A ZonedDateTime for the same instant, in the given time zone and the ISO8601 calendar 
InZone(DateTimeZone, CalendarSystem)
Returns the ZonedDateTime representing the same point in time as this instant, in the
specified time zone and calendar system.
Since 1.0.x
Availability net6.0, netstandard2.0
Declaration
public readonly ZonedDateTime InZone(DateTimeZone zone, CalendarSystem calendar)
Parameters
Type  Name  Description 

DateTimeZone  zone  The time zone in which to represent this instant. 
CalendarSystem  calendar  The calendar system in which to represent this instant. 
Returns
Type  Description 

ZonedDateTime  A ZonedDateTime for the same instant, in the given time zone and calendar 
Max(Instant, Instant)
Returns the later instant of the given two.
Since 1.0.x
Availability net6.0, netstandard2.0
Declaration
public static Instant Max(Instant x, Instant y)
Parameters
Type  Name  Description 

Instant  x  The first instant to compare. 
Instant  y  The second instant to compare. 
Returns
Type  Description 

Instant  The later instant of x or y . 
Min(Instant, Instant)
Returns the earlier instant of the given two.
Since 1.0.x
Availability net6.0, netstandard2.0
Declaration
public static Instant Min(Instant x, Instant y)
Parameters
Type  Name  Description 

Instant  x  The first instant to compare. 
Instant  y  The second instant to compare. 
Returns
Type  Description 

Instant  The earlier instant of x or y . 
Minus(Duration)
Returns the result of subtracting a duration from this instant, for a fluent alternative to
operator()
.
Since 1.0.x
Availability net6.0, netstandard2.0
Declaration
public readonly Instant Minus(Duration duration)
Parameters
Type  Name  Description 

Duration  duration  The duration to subtract 
Returns
Type  Description 

Instant  A new Instant representing the result of the subtraction. 
Minus(Instant)
Returns the result of subtracting another instant from this one, for a fluent alternative to
operator()
.
Since 1.0.x
Availability net6.0, netstandard2.0
Declaration
public readonly Duration Minus(Instant other)
Parameters
Type  Name  Description 

Instant  other  The other instant to subtract 
Returns
Type  Description 

Duration  A new Instant representing the result of the subtraction. 
Plus(Duration)
Returns the result of adding a duration to this instant, for a fluent alternative to
operator+()
.
Since 1.0.x
Availability net6.0, netstandard2.0
Declaration
public readonly Instant Plus(Duration duration)
Parameters
Type  Name  Description 

Duration  duration  The duration to add 
Returns
Type  Description 

Instant  A new Instant representing the result of the addition. 
PlusNanoseconds(Int64)
Returns a new value of this instant with the given number of nanoseconds added to it.
Since 2.0.x
Availability net6.0, netstandard2.0
Declaration
public readonly Instant PlusNanoseconds(long nanoseconds)
Parameters
Type  Name  Description 

Int64  nanoseconds  The nanoseconds to add to this instant to create the return value. 
Returns
Type  Description 

Instant  The result of adding the given number of ticks to this instant. 
PlusTicks(Int64)
Returns a new value of this instant with the given number of ticks added to it.
Since 1.0.x
Availability net6.0, netstandard2.0
Declaration
public readonly Instant PlusTicks(long ticks)
Parameters
Type  Name  Description 

Int64  ticks  The ticks to add to this instant to create the return value. 
Returns
Type  Description 

Instant  The result of adding the given number of ticks to this instant. 
Subtract(Instant, Duration)
Subtracts a duration from an instant. Friendly alternative to
operator()
.
Since 1.0.x
Availability net6.0, netstandard2.0
Declaration
public static Instant Subtract(Instant left, Duration right)
Parameters
Type  Name  Description 

Instant  left  The left hand side of the operator. 
Duration  right  The right hand side of the operator. 
Returns
Type  Description 

Instant  A new Instant representing the difference of the given values. 
Subtract(Instant, Instant)
Subtracts one instant from another. Friendly alternative to
operator()
.
Since 1.0.x
Availability net6.0, netstandard2.0
Declaration
public static Duration Subtract(Instant left, Instant right)
Parameters
Type  Name  Description 

Instant  left  The left hand side of the operator. 
Instant  right  The right hand side of the operator. 
Returns
Type  Description 

Duration  A new Duration representing the difference of the given values. 
ToDateTimeOffset()
Constructs a DateTimeOffset from this Instant which has an offset of zero.
Since 1.0.x
Availability net6.0, netstandard2.0
Declaration
public readonly DateTimeOffset ToDateTimeOffset()
Returns
Type  Description 

DateTimeOffset  A DateTimeOffset representing the same instant in time as this value. 
Remarks
If the date and time is not on a tick boundary (the unit of granularity of DateTime) the value will be truncated towards the start of time.
Exceptions
Type  Condition 

InvalidOperationException  The final date/time is outside the range of DateTimeOffset . 
ToDateTimeUtc()
Constructs a DateTime from this Instant which has a Kind
of Utc and represents the same instant of time as this value.
Since 1.0.x
Availability net6.0, netstandard2.0
Declaration
public readonly DateTime ToDateTimeUtc()
Returns
Type  Description 

DateTime  A DateTime representing the same instant in time as this value, with a kind of "universal". 
Remarks
If the date and time is not on a tick boundary (the unit of granularity of DateTime) the value will be truncated towards the start of time.
Exceptions
Type  Condition 

InvalidOperationException  The final date/time is outside the range of DateTime . 
ToJulianDate()
Returns the Julian Date of this instance  the number of days since
JulianEpoch (noon on January 1st, 4713 BCE in the Julian calendar).
Since 2.0.x
Availability net6.0, netstandard2.0
Declaration
public readonly double ToJulianDate()
Returns
Type  Description 

Double  The number of days (including fractional days) since the Julian Epoch. 
ToString()
Returns a String that represents this instance.
Since 1.0.x
Availability net6.0, netstandard2.0
Declaration
public override readonly string ToString()
Returns
Type  Description 

String  The value of the current instance in the default format pattern ("g"), using the current thread's culture to obtain a format provider. 
Overrides
ToString(String, IFormatProvider)
Formats the value of the current instance using the specified pattern.
Since 1.0.x
Availability net6.0, netstandard2.0
Declaration
public readonly string ToString(string patternText, IFormatProvider formatProvider)
Parameters
Type  Name  Description 

String  patternText  The String specifying the pattern to use, or null to use the default format pattern ("g"). 
IFormatProvider  formatProvider  The IFormatProvider to use when formatting the value, or null to use the current thread's culture to obtain a format provider. 
Returns
Type  Description 

String  A String containing the value of the current instance in the specified format. 
ToUnixTimeMilliseconds()
Gets the number of milliseconds since the Unix epoch. Negative values represent instants before the Unix epoch.
Since 2.0.x
Availability net6.0, netstandard2.0
Declaration
public readonly long ToUnixTimeMilliseconds()
Returns
Type  Description 

Int64  The number of milliseconds since the Unix epoch. 
Remarks
If the number of nanoseconds in this instant is not an exact number of milliseconds, the value is truncated towards the start of time.
ToUnixTimeSeconds()
Gets the number of seconds since the Unix epoch. Negative values represent instants before the Unix epoch.
Since 2.0.x
Availability net6.0, netstandard2.0
Declaration
public readonly long ToUnixTimeSeconds()
Returns
Type  Description 

Int64  The number of seconds since the Unix epoch. 
Remarks
If the number of nanoseconds in this instant is not an exact number of seconds, the value is truncated towards the start of time.
ToUnixTimeTicks()
Gets the number of ticks since the Unix epoch. Negative values represent instants before the Unix epoch.
Since 1.4.x
Availability net6.0, netstandard2.0
Declaration
public readonly long ToUnixTimeTicks()
Returns
Type  Description 

Int64  The number of ticks since the Unix epoch. 
Remarks
A tick is equal to 100 nanoseconds. There are 10,000 ticks in a millisecond. If the number of nanoseconds
in this instant is not an exact number of ticks, the value is truncated towards the start of time.
WithOffset(Offset)
Returns the OffsetDateTime representing the same point in time as this instant, with
the specified UTC offset in the ISO calendar system.
Since 1.2.x
Availability net6.0, netstandard2.0
Declaration
public readonly OffsetDateTime WithOffset(Offset offset)
Parameters
Type  Name  Description 

Offset  offset  The offset from UTC with which to represent this instant. 
Returns
Type  Description 

OffsetDateTime  An OffsetDateTime for the same instant, with the given offset in the ISO calendar system 
WithOffset(Offset, CalendarSystem)
Returns the OffsetDateTime representing the same point in time as this instant, with
the specified UTC offset and calendar system.
Since 1.2.x
Availability net6.0, netstandard2.0
Declaration
public readonly OffsetDateTime WithOffset(Offset offset, CalendarSystem calendar)
Parameters
Type  Name  Description 

Offset  offset  The offset from UTC with which to represent this instant. 
CalendarSystem  calendar  The calendar system in which to represent this instant. 
Returns
Type  Description 

OffsetDateTime  An OffsetDateTime for the same instant, with the given offset and calendar 
Operators
Addition(Instant, Duration)
Since 1.0.x
Availability net6.0, netstandard2.0
Declaration
public static Instant operator +(Instant left, Duration right)
Parameters
Type  Name  Description 

Instant  left  The left hand side of the operator. 
Duration  right  The right hand side of the operator. 
Returns
Type  Description 

Instant  A new Instant representing the sum of the given values. 
Equality(Instant, Instant)
Implements the operator == (equality).
See the type documentation for a description of equality semantics.
Since 1.0.x
Availability net6.0, netstandard2.0
Declaration
public static bool operator ==(Instant left, Instant right)
Parameters
Type  Name  Description 

Instant  left  The left hand side of the operator. 
Instant  right  The right hand side of the operator. 
Returns
Type  Description 

Boolean  true if values are equal to each other, otherwise false . 
GreaterThan(Instant, Instant)
Implements the operator > (greater than).
See the type documentation for a description of ordering semantics.
Since 1.0.x
Availability net6.0, netstandard2.0
Declaration
public static bool operator>(Instant left, Instant right)
Parameters
Type  Name  Description 

Instant  left  The left hand side of the operator. 
Instant  right  The right hand side of the operator. 
Returns
Type  Description 

Boolean  true if the left value is greater than the right value, otherwise false . 
GreaterThanOrEqual(Instant, Instant)
Implements the operator >= (greater than or equal).
See the type documentation for a description of ordering semantics.
Since 1.0.x
Availability net6.0, netstandard2.0
Declaration
public static bool operator >=(Instant left, Instant right)
Parameters
Type  Name  Description 

Instant  left  The left hand side of the operator. 
Instant  right  The right hand side of the operator. 
Returns
Type  Description 

Boolean  true if the left value is greater than or equal to the right value, otherwise false . 
Inequality(Instant, Instant)
Implements the operator != (inequality).
See the type documentation for a description of equality semantics.
Since 1.0.x
Availability net6.0, netstandard2.0
Declaration
public static bool operator !=(Instant left, Instant right)
Parameters
Type  Name  Description 

Instant  left  The left hand side of the operator. 
Instant  right  The right hand side of the operator. 
Returns
Type  Description 

Boolean  true if values are not equal to each other, otherwise false . 
LessThan(Instant, Instant)
Implements the operator < (less than).
See the type documentation for a description of ordering semantics.
Since 1.0.x
Availability net6.0, netstandard2.0
Declaration
public static bool operator <(Instant left, Instant right)
Parameters
Type  Name  Description 

Instant  left  The left hand side of the operator. 
Instant  right  The right hand side of the operator. 
Returns
Type  Description 

Boolean  true if the left value is less than the right value, otherwise false . 
LessThanOrEqual(Instant, Instant)
Implements the operator <= (less than or equal).
See the type documentation for a description of ordering semantics.
Since 1.0.x
Availability net6.0, netstandard2.0
Declaration
public static bool operator <=(Instant left, Instant right)
Parameters
Type  Name  Description 

Instant  left  The left hand side of the operator. 
Instant  right  The right hand side of the operator. 
Returns
Type  Description 

Boolean  true if the left value is less than or equal to the right value, otherwise false . 
Subtraction(Instant, Duration)
Since 1.0.x
Availability net6.0, netstandard2.0
Declaration
public static Instant operator (Instant left, Duration right)
Parameters
Type  Name  Description 

Instant  left  The left hand side of the operator. 
Duration  right  The right hand side of the operator. 
Returns
Type  Description 

Instant  A new Instant representing the difference of the given values. 
Subtraction(Instant, Instant)
Since 1.0.x
Availability net6.0, netstandard2.0
Declaration
public static Duration operator (Instant left, Instant right)
Parameters
Type  Name  Description 

Instant  left  The left hand side of the operator. 
Instant  right  The right hand side of the operator. 
Returns
Type  Description 

Duration  A new Duration representing the difference of the given values. 
Explicit Interface Implementations
IComparable.CompareTo(Object)
Implementation of CompareTo(Object) to compare two instants.
See the type documentation for a description of ordering semantics.
Since 1.0.x
Availability net6.0, netstandard2.0
Declaration
readonly int IComparable.CompareTo(object obj)
Parameters
Type  Name  Description 

Object  obj  The object to compare this value with. 
Returns
Type  Description 

Int32  The result of comparing this instant with another one; see CompareTo(Instant) for general details.
If obj is null, this method returns a value greater than 0.

Remarks
This uses explicit interface implementation to avoid it being called accidentally. The generic implementation should usually be preferred.
Exceptions
Type  Condition 

ArgumentException  obj is nonnull but does not refer to an instance of Instant. 
IXmlSerializable.ReadXml(XmlReader)
Since 1.2.x
Availability net6.0, netstandard2.0
Declaration
readonly void IXmlSerializable.ReadXml(XmlReader reader)
Parameters
Type  Name  Description 

XmlReader  reader 
IXmlSerializable.WriteXml(XmlWriter)
Since 1.2.x
Availability net6.0, netstandard2.0
Declaration
readonly void IXmlSerializable.WriteXml(XmlWriter writer)
Parameters
Type  Name  Description 

XmlWriter  writer 