mirror of
https://github.com/whekin/household-bot.git
synced 2026-04-01 00:14:03 +00:00
refactor(time): migrate runtime time handling to Temporal
This commit is contained in:
41
packages/domain/src/time.ts
Normal file
41
packages/domain/src/time.ts
Normal file
@@ -0,0 +1,41 @@
|
||||
import { Temporal } from '@js-temporal/polyfill'
|
||||
|
||||
export { Temporal }
|
||||
|
||||
export type Instant = Temporal.Instant
|
||||
|
||||
export function nowInstant(): Instant {
|
||||
return Temporal.Now.instant()
|
||||
}
|
||||
|
||||
export function instantFromEpochSeconds(epochSeconds: number): Instant {
|
||||
return Temporal.Instant.fromEpochMilliseconds(epochSeconds * 1000)
|
||||
}
|
||||
|
||||
export function instantToEpochSeconds(instant: Instant): number {
|
||||
return Math.floor(instant.epochMilliseconds / 1000)
|
||||
}
|
||||
|
||||
export function instantFromDate(date: Date): Instant {
|
||||
return Temporal.Instant.fromEpochMilliseconds(date.getTime())
|
||||
}
|
||||
|
||||
export function instantToDate(instant: Instant): Date {
|
||||
return new Date(instant.epochMilliseconds)
|
||||
}
|
||||
|
||||
export function instantFromIso(value: string): Instant {
|
||||
return Temporal.Instant.from(value)
|
||||
}
|
||||
|
||||
export function instantFromDatabaseValue(value: Date | string | null): Instant | null {
|
||||
if (value instanceof Date) {
|
||||
return instantFromDate(value)
|
||||
}
|
||||
|
||||
if (typeof value === 'string') {
|
||||
return instantFromIso(value)
|
||||
}
|
||||
|
||||
return null
|
||||
}
|
||||
Reference in New Issue
Block a user