Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/seljabali/java-time-fun
java.time Kotlin extension functions library.
https://github.com/seljabali/java-time-fun
calendar date date-formatting date-library date-time java javatime joda-time kotlin kotlin-extensions
Last synced: 2 months ago
JSON representation
java.time Kotlin extension functions library.
- Host: GitHub
- URL: https://github.com/seljabali/java-time-fun
- Owner: seljabali
- License: mit
- Created: 2021-09-04T07:27:08.000Z (over 3 years ago)
- Default Branch: main
- Last Pushed: 2024-06-06T12:19:06.000Z (7 months ago)
- Last Synced: 2024-08-02T09:28:51.440Z (6 months ago)
- Topics: calendar, date, date-formatting, date-library, date-time, java, javatime, joda-time, kotlin, kotlin-extensions
- Language: Kotlin
- Homepage: https://seljabali.github.io/java-time-fun
- Size: 649 KB
- Stars: 59
- Watchers: 1
- Forks: 2
- Open Issues: 4
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- awesome-kotlin - Java Time Fun - Java.time Kotlin extension functions library. (Libraries)
- awesome-list - seljabali/java-time-fun - java.time Kotlin extension functions library. (Kotlin)
README
Java Time Kotlin extension functions.
## Background
[Java Time](https://docs.oracle.com/javase/8/docs/api/java/time/package-summary.html), released in Java 8, was a huge improvement over its [Date](https://docs.oracle.com/javase/8/docs/api/java/sql/Date.html) predecessor.
This library empowers Java Time & makes it a lot of **fun**! 😃```diff
- val dateTimeFormatter = DateTimeFormatter.ofPattern("yyyyMMdd")
- val date = LocalDate.parse(dateText, dateTimeFormatter)
+ val date = dateText.toLocalDate("yyyyMMdd")- val dateFormatter = DateTimeFormatter.ofPattern("MM/dd/yyyy")
- print(dateFormatter.format(date))
+ print(date.print("MM/dd/yyyy"))- if (ChronoUnit.YEARS.between(dateOfBirth, LocalDate.now()) < 18) {
+ if (dateOfBirth.getYearDifference(LocalDates.today) < 18) {
```## What's In It?
#### 1. Parsing
```kotlin
// 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".toLocalDate(format = "MM/dd/yyyy")// Automatic time zone conversions
val result = "2021-10-04T10:10:00+0000".toZonedDateTime()// Maintain original time zone
val result = "2021-10-04T10:10:00+0000".toZonedDateTime(useSystemTimeZone = false)// Parse LocalDate as ZonedDateTime
val result = "2021-06-07".toZonedDateTime()
```
#### 2. Creation
```kotlin
val result = ZonedDateTimeUtil.new(year = 2021, month = 3, day = 25)val result = Date().toLocalDateTime()
val result = GregorianCalendar().toLocalDate()
val result = LocalTimeUtil.new(hour = 5, minute = 30)
```#### 3. Comparisons
```kotlin
// 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)
```#### 4. Print
```kotlin
val date = "2021-07-06".toZonedDateTime()
val result = date.print(format = "MM/dd/yyyy")
```#### 5. Attributes
```kotlin
val result = date.isAtStartOfDay()val result = date.getDaysInMonth()
```#### 6. Mutations
```kotlin
val result = date.atStartOfDay()val result = date.getLast(DayOfWeek.FRIDAY)
val result = date.getNext(DayOfWeek.MONDAY)
```#### 7. Preset Dates
```kotlin
val result = ZonedDateTimes.todayval result = LocalDateTimes.tomorrow
val result = LocalDates.nextMonday
```## Install
Add to module `build.gradle`:
```gradle
repositories {
mavenCentral()
}dependencies {
implementation("org.eljabali.sami.javatimefun:javatimefun:3.0.0")
}
```For Android
In addition to the above, you need to desugar your module:
- Ensure you're using [Gradle Plugin](https://developer.android.com/studio/releases/gradle-plugin#updating-plugin) 4.0.0+.
- Update module `build.gradle`:
```gradle
android {
defaultConfig {
// Required when setting minSdkVersion to 20 or lower
multiDexEnabled true
}compileOptions {
// Flag to enable support for the new language APIs
coreLibraryDesugaringEnabled true
// Sets Java compatibility to Java 8
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
}dependencies {
coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:1.1.5'
}
```
For more information on Android desugaring click [here](https://developer.android.com/studio/write/java8-support#library-desugaring).## Find this library useful? 😏
Star this repository __[as others have](https://github.com/seljabali/java-time-fun/stargazers)__. ⭐️