Island Time
A Kotlin Multiplatform library for working with dates and times, heavily inspired by the java.time library.
Features:
- A full 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
- Access localized text for names of months, days of the week, time zones, etc.
- Convenience operators like
date.next(MONDAY)
,dateTime.startOfWeek
, ordate.week(WeekSettings.systemDefault())
- Convert to and from platform-specific date-time types
- Works on JVM, Android, iOS, macOS, tvOS, and watchOS
Notable Limitations:
- No custom format strings (must write platform-specific code to do this)
- No support for JavaScript or non-Apple native platforms
- Only supports the ISO calendar system
Island Time is still early in development and "moving fast" so to speak. The API is likely to experience changes between minor version increments.
See the project website for more information along with the API reference docs.
Feedback/Contributions
The goal of this project is not just to port the java.time library over to Kotlin Multiplatform, but to take full advantage of Kotlin language features to create a date-time DSL that feels natural to users of the language and encourages best practices where possible. To that end, any and all feedback would be much appreciated in helping to iron out the API.
If you're interested in contributing or have ideas on areas that can be improved (there are definitely many right now), please feel free to initiate a dialog by opening design-related issues or submitting pull requests.