day.js 未将 UTC 时间转换为本地时间
day.js is not converting UTC to local time
我 运行 遇到了一个问题,试图将 momentjs 转换为 day.js。
瞬间,我通过 moment.utc('2020-04-22T14:56:09.388842').local().format('MM/DD/YY h:mm A')
returns 04/22/20 9:56 AM
.
将 utc 转换为本地时间
当我通过 dayjs.utc('2020-04-22T14:56:09.388842').local().format('MM/DD/YY h:mm A')
使用 day.js 转换时,我得到 04/22/20 2:56 PM
;我正在导入 utc 插件。
我在 jsfiddle 中放了一个例子:https://jsfiddle.net/obdg74sp/2/
有没有人运行遇到过这个问题,如果遇到过,你们是如何解决的?
谢谢。
Moment 和 Day.js 都只支持毫秒精度,但是当传递超过 3 位小数进行解析时,它们的行为有所不同。
- Moment 会忽略多余的小数,但仍会使用自己的解析逻辑
- Day.js 恢复为
Date.parse
函数
在后一种情况下,没有 UTC 感知,因此尽管通过 dayjs.utc
函数传递,您仍获得当地时间。
这是在 Day.js issue #544 中提出的,并由该图书馆的所有者关闭,没有任何更改。
您可以通过修剪字符串以截断多余的小数来解决此问题。
dayjs.utc('2020-04-22T14:56:09.388842'.substring(0, 23))
然后它将正确解析 UTC,您的其余逻辑将相应地工作。
(或者,您可以将 Z
附加到字符串)
我用过:
dayjs(date).utc('z').local().tz(ianaCode).format('ddd, MMM D, H:mm z')
示例:
dayjs('2021-06-08T24:00:00').utc('z').local().tz('America/Detroit').format('ddd, MMM D, H:mm z')
我 运行 遇到了一个问题,试图将 momentjs 转换为 day.js。
瞬间,我通过 moment.utc('2020-04-22T14:56:09.388842').local().format('MM/DD/YY h:mm A')
returns 04/22/20 9:56 AM
.
当我通过 dayjs.utc('2020-04-22T14:56:09.388842').local().format('MM/DD/YY h:mm A')
使用 day.js 转换时,我得到 04/22/20 2:56 PM
;我正在导入 utc 插件。
我在 jsfiddle 中放了一个例子:https://jsfiddle.net/obdg74sp/2/
有没有人运行遇到过这个问题,如果遇到过,你们是如何解决的?
谢谢。
Moment 和 Day.js 都只支持毫秒精度,但是当传递超过 3 位小数进行解析时,它们的行为有所不同。
- Moment 会忽略多余的小数,但仍会使用自己的解析逻辑
- Day.js 恢复为
Date.parse
函数
在后一种情况下,没有 UTC 感知,因此尽管通过 dayjs.utc
函数传递,您仍获得当地时间。
这是在 Day.js issue #544 中提出的,并由该图书馆的所有者关闭,没有任何更改。
您可以通过修剪字符串以截断多余的小数来解决此问题。
dayjs.utc('2020-04-22T14:56:09.388842'.substring(0, 23))
然后它将正确解析 UTC,您的其余逻辑将相应地工作。
(或者,您可以将 Z
附加到字符串)
我用过:
dayjs(date).utc('z').local().tz(ianaCode).format('ddd, MMM D, H:mm z')
示例:
dayjs('2021-06-08T24:00:00').utc('z').local().tz('America/Detroit').format('ddd, MMM D, H:mm z')