25 lines
825 B
JavaScript
25 lines
825 B
JavaScript
import { zonedTimeToUtc, utcToZonedTime } from 'date-fns-tz/fp'
|
|
import { format } from 'date-fns/fp'
|
|
|
|
const toUtc = date => {
|
|
const browserTimezone = Intl.DateTimeFormat().resolvedOptions().timeZone
|
|
return zonedTimeToUtc(browserTimezone, date)
|
|
}
|
|
|
|
const toTimezone = (date, timezone) => {
|
|
const browserTimezone = Intl.DateTimeFormat().resolvedOptions().timeZone
|
|
return utcToZonedTime(timezone, zonedTimeToUtc(browserTimezone, date))
|
|
}
|
|
|
|
const formatDate = (date, timezone, pattern) => {
|
|
const browserTimezone = Intl.DateTimeFormat().resolvedOptions().timeZone
|
|
const newDate = utcToZonedTime(
|
|
timezone,
|
|
zonedTimeToUtc(browserTimezone, date)
|
|
)
|
|
return format(pattern, newDate)
|
|
}
|
|
|
|
const formatDateNonUtc = (date, pattern) => format(pattern, date)
|
|
|
|
export { toUtc, toTimezone, formatDate, formatDateNonUtc }
|