Skip to content

seljabali/kotlinx-datetime-fun

Repository files navigation

SwiftDate

Kotlinx DateTime Fun

Kotlinx DateTime extension functions.

Build Status Maven Central Kotlin


- 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)

Features

Parsing

Convert strings into Kotlinx DateTime objects with ease

// Provided time
val result = "01:30 AM".toLocalTime()

// Provided local date
val result = "2021-06-07".toLocalDate()

// Provided ambiguous date formats
val result = "06/07/2021".toLocalDateTime(format = "MM/dd/yyyy")

Comparisons

Compare dates and times at various granularities

// Year
val result = dateA.compareYear(dateB)
val result = dateA.isBeforeYear(dateB)

// Month
val result = dateA.compareMonth(dateB)
val result = dateA.getMonthDifference(dateB)
val result = dateA.isEqualMonth(dateB)

// Day
val result = dateA.compareDay(dateB)
val result = dateA.getDayDifference(dateB)
val result = dateA.isAfterEqualDay(dateB)

// Time
val result = dateA.compareTime(dateB)
val result = dateA.getMinuteDifference(dateB)
val result = dateA.isAfterEqualTime(dateB)

Formatting

Print dates and times using a custom format

val date = "2021-07-06".toLocalDate()
val result = date.print(format = "MM/dd/yyyy")

Attributes & Mutations

Query and transform date/time attributes

val result = date.isAtStartOfDay()
val result = date.getDaysInMonth()

val result = date.getLast(DayOfWeek.FRIDAY)
val result = date.getNext(DayOfWeek.MONDAY)

Preset Dates

Quickly access commonly used dates

val result = LocalTime.now()
val result = LocalDate.startOfYear()
val result = LocalDateTime.yesterday()

Installation

Add the following to your module’s build.gradle:

repositories {
  mavenCentral()
}

dependencies {
  implementation("org.eljabali.sami.kotlinxdatetimefun:kotlinxdatetimefun:0.0.1")
}  

Find this library useful? 😏

Star this repository as others have. ⭐️