- Add the Wasm/WASI target support (#366). Thanks, @igoriakovlev!
- Add
TimeSource.asClock
(#164). Thanks, @hfhbd! - Implement parsing and formatting day-of-year (#414)
- Improve the precision of
NSDate
toInstant
conversions (#427) - Deprecate
DatePeriod.plus
andDateTimePeriod.plus
with a warning (#381) - Deprecate
Clock.asTimeSource
with a warning (#372) - Fix a bug in
module-info
preventing usingkotlinx.datetime.format
together with JPMS (#438). Thanks, @cdelabou! - Small tweaks and fixes.
- Prohibit parsing non-ASCII digits as numbers in
DateTimeFormat
(#405) - More accurately determine which files represent time zones and which don't on Linux and Darwin (#395)
- Fix a regression that occasionally considered the right boundary of a time overlap to be a part of it on Native (#399)
- Introduce various small improvements to the timezone handling on Windows (#390)
- On Linux, allow not having any
/etc/localtime
set, defaulting toTimeZone.UTC
as the system time zone (#426)
- Introduce the widely requested API for locale-invariant parsing and formatting (#343)
- Completely overhaul the KDoc-based documentation (#347)
- Breaking change: forbid parsing
Instant
values without the second-of-minute component on the JVM and JS, fixing inconsistency with Native (#369) - Breaking change: use the fully qualified name of classes in the JSON serializers (#308)
- Fix Proguard emitting warning about missing
kotlinx-serialization
classes when serialization is not used (#336) - Reimplement the timezone database handling for Native targets from scratch (#286, #327)
- Support Android NDK targets (#344)
- Small tweaks and fixes.
- Completely overhaul the KDoc-based documentation (#347)
- Breaking change: forbid parsing
Instant
values without the second-of-minute component on the JVM and JS, fixing inconsistency with Native (#369) - Improve error descriptiveness in some cases (#360, #371)
- Remove
stat
usages to comply with Apple's new publishing requirements (#385) - Fix parsing of formats where
optional
is directly between numbers (#362) - Forbid empty and duplicate month, day-of-week, and AM/PM marker names in datetime formats (#362)
- Introduce the widely requested API for locale-invariant parsing and formatting (#343)
- Breaking change: use the fully qualified name of classes in the JSON serializers (#308)
- Fix Proguard emitting warning about missing
kotlinx-serialization
classes when serialization is not used (#336) - Reimplement the timezone database handling for Native targets from scratch (#286, #327)
- Update Kotlin dependency to 1.9.21, kotlinx.serialization to 1.6.2
- Add support of Wasm-Js target through Js interop with the same js-joda library as in Js (#315)
- Prevent secondary outputs of Java 9 compilation getting packed into jar (#305)
- Update Kotlin dependency to 1.8.21, kotlinx.serialization to 1.5.1
- Support more Kotlin/Native targets:
linuxArm64
,linuxArm32Hfp
,watchosDeviceArm64
- Implement comparable time marks in a time source returned by
Clock.asTimeSource()
(#271) - Deprecate
Instant
andLocalDate
arithmetic operations (plus
andminus
) takingDateTimeUnit
without a number of units (#247) - Fix adding small
Duration
to largeInstant
on JS and Native (#264)
- Add the
LocalTime
class for representing time-of-day (#57). Thank you, @bishiboosh! - Provide
LocalTime#toSecondOfDay
,LocalTime.fromSecondOfDay
, and various other functions for compact representation ofLocalTime
(#204). Thank you, @vanniktech! - Provide
LocalDate#toEpochDays
,LocalDate.fromEpochDays
for representing aLocalDate
as a single number (#214). - Rename
Clock.todayAt
toClock.todayIn
for naming consistency (#206). - Update the Kotlin dependency to 1.7.0.
- Just updated Kotlin dependency to 1.7.0-Beta and kotlinx.serialization to 1.3.2
- Update Kotlin dependency to 1.6.0 and remove
ExperimentalTime
from API involvingDuration
which became stable (#156) - Add an explicit
module-info
descriptor to JVM variant of the library (#135) kotlinx.datetime.Instant
conversions to and from JSDate
(#170).
- Fixed a crash in desugared code on Android when trying to construct time zones with some specific identifiers (149)
- Added
iosSimulatorArm64
,watchosSimulatorArm64
,tvosSimulatorArm64
,macosArm64
target support (141, 144).
ZoneOffset
was replaced by two other classes:FixedOffsetTimeZone
, which represents a time zone with a fixed offset, andUtcOffset
, which represents just the UTC offset (PR#125).- The
DayBased
andMonthBased
subclasses ofDateTimeUnit.DateBased
are now accessed asDateTimeUnit.DayBased
andDateTimeUnit.MonthBased
as opposed toDateTimeUnit.DateBased.DayBased
andDateTimeUnit.DateBased.MonthBased
respectively (PR#131).
- Fixed the library being incompatible with kotlinx.serialization 1.2.0 and above (#118).
watchosX64
target support. In practice, this means the ability to run projects that depend on this library in the iOS Simulator for Apple Watch.
- Fixed
TimeZone.currentSystemDefault()
crashing on Darwin if the resulting time zone is not listed amongTimeZone.knownTimeZoneIdentifiers
(#94)
kotlinx-serialization
support (#37)- Normalization of
DateTimePeriod
components, meaning that periods that are semantically equivalent are considered equal (#81) Instant
can now be parsed from an ISO-8601 string with an offset other thanZ
(#56)
- Fix a crash when getting the current time on iOS 9 (#52)
- Wrong answers in some cases when adding date-based units to instants on Darwin and Windows (#51)
- Zone-agnostic time-based arithmetic on Instants, e.g.
Instant.plus(value, DateTimeUnit.TimeBased)
- Add
Instant.fromEpochSeconds(epochSeconds: Long, nanosecondAdjustment: Int)
construction function - Introduce
minus
operations complementary to existingplus
arithmetic operations (#42)
A minimal, but still valuable multiplatform implementation of date and time types.