javascript dayjs无法正确转换时区

b4qexyjb  于 2022-12-21  发布在  Java
关注(0)|答案(6)|浏览(418)

我正在尝试将日期从我的本地时间(Taipei UTC+8)转换为洛杉矶(UTC-7),但是dayjs转换似乎完全关闭:

dayjs("2020-09-21 20:30").tz("Asia/Taipei")

这将导致2020年9月22日星期二05:30:00 GMT-0400(东部夏令时),但它应该是2020年9月21日星期一02:30:00 GMT-0400(东部夏令时)
知道发生什么事了吗

vohkndzv

vohkndzv1#

我修正了先使用utc,然后在本地时区格式化的问题

import dayjs from 'dayjs'
import utc from 'dayjs/plugin/utc'
import tz from 'dayjs/plugin/timezone'

dayjs.extend(utc)
dayjs.extend(tz)

const timeZone = dayjs.tz.guess()
dayjs.utc(utcDate).tz(timeZone)
gkl3eglg

gkl3eglg2#

试试这个:

dayjs.extend(utc)
dayjs.extend(timezone)
dayjs("2020-09-21 20:30").tz("Asia/Taipei")
7y4bm7vi

7y4bm7vi3#

我通过在dayjs(“2020-09-21 20:30”).tz(“亚洲/台北”).local()后面添加.local()修复了这个问题

46scxncf

46scxncf4#

我使用的是dayjs - 1.11.1的最新版本和react native v0.66.4。

dayjs("2020-09-21 20:30").tz("Asia/Taipei")

结果是null,有人有这个问题吗?

p8ekf7hl

p8ekf7hl5#

import dayjs from 'dayjs'
import utc from 'dayjs/plugin/utc'
import tz from 'dayjs/plugin/timezone'

dayjs.extend(utc)
dayjs.extend(tz)    

dayjs("2020-09-21 20:30").tz("Asia/Taipei").local().toDate();

dayjs("2020-09-21 20:30").tz("Asia/Taipei").local().toDate().toLocaleString();

.toString().toISOString()似乎总是打印原始日期,在时区转换之前,这可能会引起一些混乱。toDate().toLocaleString()工作。

kgqe7b3p

kgqe7b3p6#

不包括任何插件,如utctimezone,你可以很容易地格式化utc日期,并将其传递到dayjs如下:

const utcTimestamp = 1668414677538;
const utcFormat = dayjs(utcTimestamp).format('YYYY-MM-DDTHH:mm:ss+00:00');
console.log(dayjs(utcFormat).format('DD MMM, hh:mm a'));

它会起作用的

相关问题