gpt4 book ai didi

javascript - Luxon.js ISO 8601 解析

转载 作者:行者123 更新时间:2023-12-02 23:53:48 25 4
gpt4 key购买 nike

我正在使用 Luxon.js 来处理日期,并且我正在尝试解析来自服务器的一些 ISO 字符串。它有这样的格式

2019-04-04T12:12:07+03:00

我正在使用 Luxon 的方法 - fromISO 应该解析这个 str

DateTime.fromISO("2019-04-04T12:12:07+03:00", "dd LLLL yyyy")

我预计会在输出中看到2019年4月4日 - 15:12,但它返回2019年4月4日 - 12:12不知何故,我不明白为什么会发生?

我做错了什么吗?因为当我尝试使用此 ISO 字符串 2019-04-04T12:12:07.756Z它就像一个魅力。但我不明白为什么前一个不起作用,我应该做什么才能使它起作用?

我将不胜感激任何帮助!

附注老实说,我对 ISO 时间的了解有一些差距,如果这个问题很愚蠢,我很抱歉。

最佳答案

2019-04-04T12:12:07+03:00 表示“在偏移量为 +3 的区域中,它是 12:12”。它并不是告诉 Luxon 添加 3 小时;而是告诉 Luxon 增加 3 小时。它提供了表达时间的上下文。例如,因为偏移量为 +3 的区域的本地时间比 UTC 早 3 小时(这就是它的意思),所以在英格兰它是 9:12。重点是,这是地球上的特定时间,+3 只是告诉您使用什么规则将该时间转换为字符串。

Luxon 吸收所有这些信息并计算出现在的实际时间,在其时间概念中,该时间是自 1970 年初(UTC)以来所经过的毫秒数。然后它可以将其转换为任何区域的本地时间。当然,如果您的计算机位于偏移量为 +3 的区域,则本地时间为 12:12:

-> TZ=Europe/Moscow node
> DateTime = require("luxon").DateTime
[Function: DateTime]
> var dt = DateTime.fromISO("2019-04-04T12:12:07+03:00")
undefined
> dt.toLocaleString(DateTime.TIME_24_SIMPLE)
'12:12'

我的计算机实际上位于美国东海岸,因此我看到的本地时间非常不同:

-> node
> DateTime = require("luxon").DateTime
[Function: DateTime]
> var dt = DateTime.fromISO("2019-04-04T12:12:07+03:00")
undefined
> dt.toLocaleString(DateTime.TIME_24_SIMPLE)
'05:12'

这是因为我的偏移量是-4,这意味着这里的本地时间比原始字符串中的+3早7个小时。

当我的计算机位于任何区域时,我当然可以告诉 Luxon 在任何其他区域中表达日期:

> dt.toUTC().toLocaleString(DateTime.TIME_24_SIMPLE)
'09:12'
> dt.setZone("Europe/Moscow").toLocaleString(DateTime.TIME_24_SIMPLE)
'12:12'
> dt.setZone("Asia/Tokyo").toLocaleString(DateTime.TIME_24_SIMPLE)
'18:12'

关于javascript - Luxon.js ISO 8601 解析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55515937/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com