commonMain.io.github.lyxnx.util.time.DateTime.kt Maven / Gradle / Ivy
package io.github.lyxnx.util.time
import kotlinx.datetime.Clock
import kotlinx.datetime.LocalDate
import kotlinx.datetime.LocalDateTime
import kotlinx.datetime.LocalTime
import kotlinx.datetime.TimeZone
import kotlinx.datetime.offsetAt
import kotlinx.datetime.toLocalDateTime
import kotlin.jvm.JvmSynthetic
import kotlin.time.Duration
import kotlin.time.Duration.Companion.seconds
/**
* Convenience function to get the current date and time in the specified [timezone]
*/
@JvmSynthetic
public fun LocalDateTime.Companion.now(timezone: TimeZone = TimeZone.currentSystemDefault()): LocalDateTime {
return Clock.System.now().toLocalDateTime(timezone)
}
/**
* Convenience function to get the current date without time component in the specified [timezone]
*/
@JvmSynthetic
public fun LocalDate.Companion.now(timezone: TimeZone = TimeZone.currentSystemDefault()): LocalDate {
return LocalDateTime.now(timezone).date
}
/**
* Convenience function to get the current time without date component in the specified [timezone]
*/
@JvmSynthetic
public fun LocalTime.Companion.now(timezone: TimeZone = TimeZone.currentSystemDefault()): LocalTime {
return LocalDateTime.now(timezone).time
}
/**
* Calculate the offset difference as a duration between this timezone and [other] given the current time
*/
@JvmSynthetic
public fun TimeZone.calculateOffsetDifference(other: TimeZone = TimeZone.currentSystemDefault()): Duration {
val now = Clock.System.now()
return (offsetAt(now).totalSeconds - other.offsetAt(now).totalSeconds).seconds
}