Sink/app/utils/time.ts
wudi 7cadbfe2b1 refactor: Migrate project files and directories to the app directory using the new compatibilityVersion: 4 feature
- Moved `app.config.ts` to the `app` directory
- Migrated `.vue` files and other assets to the `app` directory
- Updated import paths to reflect the new file locations
2025-03-24 11:05:59 +08:00

41 lines
1.1 KiB
TypeScript

import { type DateValue, fromAbsolute, toCalendarDate } from '@internationalized/date'
export function getTimeZone() {
if (typeof Intl === 'undefined')
return 'Etc/UTC'
return Intl.DateTimeFormat().resolvedOptions().timeZone
}
export function getLocale() {
if (typeof Intl === 'undefined')
return navigator.language
return Intl.DateTimeFormat().resolvedOptions().locale
}
export function shortDate(unix = 0) {
const shortDate = new Intl.DateTimeFormat(undefined, {
dateStyle: 'short',
})
return shortDate.format(unix * 1000)
}
export function longDate(unix = 0) {
return new Date(unix * 1000).toLocaleString()
}
export function date2unix(dateValue: DateValue | Date, type: string) {
const date = dateValue instanceof Date ? dateValue : dateValue.toDate(getTimeZone())
if (type === 'start')
return Math.floor(date.setHours(0, 0, 0) / 1000)
if (type === 'end')
return Math.floor(date.setHours(23, 59, 59) / 1000)
return Math.floor(date.getTime() / 1000)
}
export function unix2date(unix: number) {
return toCalendarDate(fromAbsolute(unix * 1000, getTimeZone()))
}