KotlinX multiplatform date/time library–
kotlinx-datetime is still under pre-release, but it has the potential to become the major date/time library in Kotlin world. So it’s worth having a peek.
Let’s go through some common cases using kotlinx-datetime.
Getting Date Components
val instant = Clock.System.now() val localDateTime = instant.toLocalDateTime(TimeZone.currentSystemDefault()) val month = localDateTime.monthNumber
A littile inconvenience since there is no
LocalDateTime.now() like the
LocalDateTime in Java.
Setting Date Components
It seems like there the only way to set date components is from the constructor of the
LocalDateTime in kotlinx-datetime is a wrapper for
LocalDateTime in Java, we should get this feature in a future release.
But if we only want to add an amount of date/time units for our date/time, we can use the
plus function of
val otherInstant instant.plus(DateTimePeriod(months = 2, days = 7), TimeZone.currentSystemDefault())
Comparing Two Date/Time
instant.periodUntil(otherInstant, TimeZone.currentSystemDefault()) // DateTimePeriod(months = 2, days = 7)
Or get the difference of a particular unit like
Temporal in Java.
instant.until(otherInstant), DateTimeUnit.MONTH, TimeZone.currentSystemDefault()) // 2
Conclutions for v0.1
It’s great that we finally have an official date/time library. However, its features are still limited.
If we compare it with
java.time, we can tell that they are similar and
java.time is handier for now. But
kotlinx-datetime also has its things such as
DateTimePeriod, so I think it’s expectable that
kotlinx-datetime may catch up or even surpass
java.time in the future.
Let’s start to keep an eye on
kotlinx-datetime and contribute to it if we have a chance.