Introducing Island Time - A Kotlin Multiplatform library for working with dates and times
Erik Christensen
Posted on November 30, 2019
One major gap when writing multiplatform Kotlin code so far has been the lack of a quality date and time library. That is to say, something that doesn't feel like a big step backwards for those used to working with java.time or the ThreeTen backport.
Island Time is a project that seeks to rectify this situation. It's inspired heavily by the java.time library, embracing many of the core classes and concepts. But it's not a strict port either, taking inspiration from other date-time libraries as well with the goal being to (ultimately) create a powerful library that enables a wide array of use cases while providing a more friendly, extension-oriented API that takes full advantage of Kotlin language features.
It's still early days, but I'm pleased to announce the first versioned release -- 0.1.0.
Some of the current features include:
- A set of date-time primitives such as
Date
,Time
,DateTime
,Instant
, andZonedDateTime
- Time zone database support
- Date ranges and time intervals, integrating with Kotlin ranges and progressions
- Read and write strings in ISO formats
- DSL-based definition of custom parsers
- Operators like
date.next(MONDAY)
ordateTime.startOfWeek
- Works on JVM, Android, iOS, and macOS
Of course, there are limitations. Most notably:
- No custom and/or localized format strings
- No localized week fields
- Only supports the ISO calendar system
- Year range currently restricted to 1-9999
- No Javascript support
You can find a lot more information on the Github page.
Development is "moving fast" and the API is likely to experience changes. In its current state though, it's a quite usable library that I suspect might satisfy the needs of quite a few of you. It certainly unblocked me in taking a chunk of my own Android app's code and making it multiplatform-friendly.
Feedback is much appreciated. There are plenty of warts and design issues that are yet to be resolved and your comments -- and contributions, if you're so inclined -- can all help make this a better library.
Posted on November 30, 2019
Join Our Newsletter. No Spam, Only the good stuff.
Sign up to receive the latest update from our blog.
Related
November 30, 2019