Kotlinx DateTime Fun
Every kotlinx.datetime extension function you'll ever need.
- val localDateFormat = LocalDate.Format {
- byUnicodePattern("dd/MM/yyyy")
- }
- val date = LocalDate.parse("11/15/2024", localDateFormat)
+ val date = "11/15/2024".toLocaldate("dd/MM/yyyy")
- val dateFormat = LocalDate.Format {
- byUnicodePattern("dd/MM/yyyy")
- }
- print(dateFormat.format(date))
+ print(date.print("MM/dd/yyyy"))
- val result = date.plus(days * -1, DateTimeUnit.DAY)
+ val result = date.minusDays(days)
Platforms
JVM · Android · iOS · JS (browser & Node.js) · WASM (browser & Node.js)
Features
Parsing
Convert strings into Kotlinx DateTime objects with ease
val result = "01:30 AM".toLocaltime()
val result = "2021-06-07".toLocaldate()
val result = "06/07/2021".toLocaldate("MM/dd/yyyy")
val result = "06/07/2021".toLocaldate("MM/dd/yyyy", "yyyy-MM-dd")
val result = "2024-11-15T12:34:56.123456Z".toLocalDatetime()
Comparisons
Compare dates and times at various granularities
val result = dateA.compareYear(dateB)
val result = dateA.isBeforeYear(dateB)
val result = dateA.compareMonth(dateB)
val result = dateA.getMonthDifference(dateB)
val result = dateA.isEqualMonth(dateB)
val result = dateA.compareDay(dateB)
val result = dateA.getDayDifference(dateB)
val result = dateA.isAfterEqualDay(dateB)
Formatting
Print dates and times using a custom format
val date = "2021-07-06".toLocaldate()
val result = date.print("MM/dd/yyyy")
Attributes
Query date/time properties
val result = date.isWeekend()
val result = date.isWeekday()
val result = date.isInLeapYear()
val result = date.getDaysInMonth()
val result = date.getMonthBaseZero()
val result = time.isAtStartOfDay()
val result = time.isAtEndOfDay()
val result = time.isAtNoon()
val result = time.isInAm()
val result = time.isInPm()
Mutations
Add, subtract, and set fields
val result = date.plusDays(3)
val result = date.minusMinutes(2)
result = date.plusSeconds()
result = date.withYear()
result = date.withMonth()
result = dateTime.withHour()
result = date.atStartOfDay()
result = date.atEndOfDay()
result = date.atStartOfMonth()
result = date.atEndOfMonth()
result = date.getLast(DayOfWeek.FRIDAY)
result = date.getNext(DayOfWeek.MONDAY)
Time Zone Conversion
Convert between time zones
val result = dateTime.fromZoneToZone(ZoneIds.AMERICA_NEW_YORK, ZoneIds.ASIA_TOKYO)
val result = dateTime.fromUtcToZone(ZoneIds.EUROPE_LONDON)
val result = dateTime.fromZoneToUtc(ZoneIds.AMERICA_LOS_ANGELES)
Preset Dates
Quickly access commonly used dates
val result = LocalTime.now()
val result = LocalDate.now()
val result = LocalDateTime.now()
val result = LocalDateTime.now(ZoneIds.AMERICA_LOS_ANGELES)
result = LocalDate.yesterday()
result = LocalDate.today()
result = LocalDate.tomorrow()
result = LocalDate.lastFriday()
result = LocalDate.nextMonday()
result = LocalDateTime.lastSunday()
result = LocalDateTime.nextWednesday()
result = LocalDate.startOfYear()
result = LocalDate.endOfYear()
result = LocalDate.startOfMonth()
result = LocalDate.endOfMonth()
Installation
Add the following to your module's build.gradle:
repositories {
mavenCentral()
}
dependencies {
implementation("org.eljabali.sami.kotlinxdatetimefun:kotlinxdatetimefun:0.1.0")
}
😏 Find this library useful?
Star this repository as others have. ⭐️
🍪 Extras
- DateTimeFormats to help with day to day printing/parsing!
- Java Time Fun library for JVM based projects.