【发布时间】:2021-03-18 20:33:05
【问题描述】:
我有一个带有一些时间戳的日志文件
2020-12-03 08:30:00
2020-12-03 08:40:00
...
我从日志提供者的文档中知道时间戳是用 UTC 编写的(尽管不使用 ISO 格式)
const toParse = "2020-12-03 08:40:00"
parse(toParse, 'yyyy-MM-dd HH:mm:ss', new Date()).toISOString()
因为我的计算机的语言环境是 UTC+1,所以我看到的是:
> "2020-12-03T07:40:00Z"
预期:
> "2020-12-03T08:40:00Z".
这是我目前用来告诉 date-fns 解析为 UTC 的 hack:
const toParse = "2020-12-03 08:40:00"
parse(toParse + '+00', 'yyyy-MM-dd HH:mm:ss' + 'X', new Date()).toISOString()
正如预期的那样,
> "2020-12-03T08:40:00Z".
有没有使用 date-fns 的正确方法?正在寻找等同于时刻的moment.utc()
【问题讨论】:
-
您可能想看看developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/… 您知道将存储日期调整为您的时区的偏移量。 Date-fns-tz 支持 Intl.DateTimeFormat。
-
无论哪种方式,您都应该指明日期时间值所具有的时区。您可以简化您的 hack:
parseIso(toParse+'Z').toISOString() -
如果“2020-12-03 08:40:00”被解析为UTC +1,则Z时间是07:40:00Z,而不是09:40。 :-)
-
感谢 RobG,我进行了编辑以修复错误
标签: javascript typescript date timezone date-fns