Skip to content

//core/io.islandtime.ranges/DateTimeInterval

DateTimeInterval

common

@Serializable(with = DateTimeIntervalIsoSerializer::class)

class DateTimeInterval(val start: DateTime = UNBOUNDED.start, val endExclusive: DateTime = UNBOUNDED.endExclusive) : Interval<DateTime>

An interval between two date-times, assumed to be at the same offset from UTC.

DateTime.MIN and DateTime.MAX are used as sentinels to indicate an unbounded (i.e. infinite) start or end.

Constructors

DateTimeInterval

common

constructor(start: DateTime = UNBOUNDED.start, endExclusive: DateTime = UNBOUNDED.endExclusive)

Types

Name Summary
Companion

common


object Companion

Properties

Name Summary
endExclusive

common


open override val endExclusive: DateTime

The end of this interval, exclusive.
endInclusive

common


open override val endInclusive: DateTime

The end of this interval, inclusive.
lengthInCenturies

common


val DateTimeInterval.lengthInCenturies: Centuries

The number of whole centuries between the start and end of this interval.
lengthInDays

common


val DateTimeInterval.lengthInDays: Days

The number of whole days between the start and end of this interval.
lengthInDecades

common


val DateTimeInterval.lengthInDecades: Decades

The number of whole decades between the start and end of this interval.
lengthInHours

common


val DateTimeInterval.lengthInHours: Hours

The number of whole hours between the start and end of this interval.
lengthInMicroseconds

common


val DateTimeInterval.lengthInMicroseconds: Microseconds

The number of whole microseconds between the start and end of this interval.
lengthInMilliseconds

common


val DateTimeInterval.lengthInMilliseconds: Milliseconds

The number of whole milliseconds between the start and end of this interval.
lengthInMinutes

common


val DateTimeInterval.lengthInMinutes: Minutes

The number of whole minutes between the start and end of this interval.
lengthInMonths

common


val DateTimeInterval.lengthInMonths: Months

The number of whole months between the start and end of this interval.
lengthInNanoseconds

common


val DateTimeInterval.lengthInNanoseconds: Nanoseconds

The number of nanoseconds between the start and end of this interval.
lengthInSeconds

common


val DateTimeInterval.lengthInSeconds: Seconds

The number of whole seconds between the start and end of this interval.
lengthInWeeks

common


val DateTimeInterval.lengthInWeeks: Weeks

The number of whole weeks between the start and end of this interval.
lengthInYears

common


val DateTimeInterval.lengthInYears: Years

The number of whole years between the start and end of this interval.
start

common


open override val start: DateTime

The start of this interval, inclusive.

Functions

Name Summary
at

common


infix fun DateTimeInterval.at(zone: TimeZone): ZonedDateTimeInterval

Combines this DateTimeInterval with a TimeZone to create a ZonedDateTimeInterval where both endpoints are in zone.
contains

common


open operator override fun contains(value: DateTime): Boolean

Checks if this interval contains value.
contains

common


fun <T> Interval<T>.contains(value: T?): Boolean

Checks if this interval contains value.
equals

common


open operator override fun equals(other: Any?): Boolean
hasBoundedEnd

common


open fun hasBoundedEnd(): Boolean

Checks if this interval's end is bounded, meaning it has a finite value.
hasBoundedStart

common


open fun hasBoundedStart(): Boolean

Checks if this interval's start is bounded, meaning it has a finite value.
hashCode

common


open override fun hashCode(): Int
hasUnboundedEnd

common


open override fun hasUnboundedEnd(): Boolean

Checks if this interval's end is unbounded. In ISO-8601 terminology, this is an "open" end.
hasUnboundedStart

common


open override fun hasUnboundedStart(): Boolean

Checks if this interval's start is unbounded. In ISO-8601 terminology, this is an "open" start.
isBounded

common


open fun isBounded(): Boolean

Checks if both the start and end of this interval are bounded, meaning it has a finite range.
isEmpty

common


open override fun isEmpty(): Boolean

Checks if this interval is empty.
isUnbounded

common


open fun isUnbounded(): Boolean

Checks if both the start and end of this interval are unbounded, meaning this is an infinite time period in both directions.
random

common


fun DateTimeInterval.random(): DateTime

Returns a random date within this interval using the default random number generator.

common


fun DateTimeInterval.random(random: Random): DateTime

Returns a random date within this interval using the supplied random number generator.
randomOrNull

common


fun DateTimeInterval.randomOrNull(): DateTime?

Returns a random date within this interval using the default random number generator or null if the interval is empty or unbounded.

common


fun DateTimeInterval.randomOrNull(random: Random): DateTime?

Returns a random date within this interval using the supplied random number generator or null if the interval is empty or unbounded.
toDateRange

common


fun DateTimeInterval.toDateRange(): DateRange

Returns this interval with the precision reduced to just the date.
toDuration

common


fun DateTimeInterval.toDuration(): Duration

Converts this interval to the Duration between the start and end date-time, which are assumed to be in the same time zone. In general, it's more appropriate to calculate duration using Instant or ZonedDateTime as any daylight savings rules won't be taken into account when working with DateTime directly.
toInstantIntervalAt

common


fun DateTimeInterval.toInstantIntervalAt(zone: TimeZone): InstantInterval

Converts this interval to an InstantInterval where both endpoints are in zone.
toPeriod

common


fun DateTimeInterval.toPeriod(): Period

Converts this interval into a Period of the same length.
toString

common


open override fun toString(): String

Converts this interval to a string in ISO-8601 extended format.