Skip to content

kotlinx-datetime Extension

Setup

To make the extension available in your code add:

testImplementation("tech.antibytes.kfixture:ktx-datetime:$KFixtureVersion")

Please not that this Extension is dependent on kotlinx-datetime.

If all requirements are fulfilled you can hook in the Extension via useDatTimeWithOnlyUtc or useDateTimeWithTimeZones like:

val fixture = kotlinFixture {
    useDateTimeWithOnlyUtc()
}

The difference between useDatTimeWithOnlyUtc and useDateTimeWithTimeZones depends on Javascript as described here. In opposite to kotlinx-datetime KFixture will either only support UTC or all (joda) timezones.

!!!note: The timezones from platform to platform differ

Supported Types

The Extension brings the following additional types:

Type
Instant
DayOfWeek
Month
TimeZone
DateTimePeriod
DatePeriod
UtcOffset
FixedOffsetTimeZone
LocalTime
LocalDate
LocalDateTime

Additional Extension Functions

While all types are implemented as Generators; LocalTime, LocalDate and LocalDateTime have a additional Extension Function, which allows nested Generators for its Instant and TimeZone:

val dateTime: LocalDateTime = fixture.fixture(
    instantGenerator = { Instant.fromEpochMilliseconds(502131) },
    timeZoneGenerator = { TimeZone.of("Europe/Berlin") },
)

Both nested generators are optional.

Extension Overview

Type Range Filterable Nested DateTime Generator
Instant
DayOfWeek
DateTimePeriod
DatePeriod
UtcOffset
FixedOffsetTimeZone
LocalTime
LocalDate
LocalDateTime