gpt4 book ai didi

javascript - 将 dateTime 字符串解析为 UTC

转载 作者:行者123 更新时间:2023-12-04 09:42:37 28 4
gpt4 key购买 nike

在我尝试过的每个日期时间库中,时区一直是个痛点。所以问题来了,假设你有一个 UTC 日期时间作为字符串提供:2019-06-25T05:00:00Z .您如何从中创建一个 UTC DateTime 对象(我使用 luxon,但答案可以是任何库)?

console.info(luxon.DateTime.fromISO('2019-06-25T05:00:00Z').toSQL());
<script src="https://moment.github.io/luxon/global/luxon.min.js"></script>


当我运行上面的代码片段时,我得到:
2019-06-25 09:00:00.000 +04:00 // local timezone

虽然我需要:
2019-06-25 05:00:00.000 -00:00 // UTC

最佳答案

三个选项供您选择:

1) Luxon 的文档说您可以使用 fromISO 获取 DateTime从中。这可以正确解析字符串。看起来要按照您想要的方式格式化,您必须告诉它使用区域 UTC,但那是因为它在输出时格式化:

const {DateTime} = luxon;
console.info(DateTime.fromISO('2019-06-25T05:00:00Z', { zone: "UTC"}).toSQL());
<script src="https://moment.github.io/luxon/global/luxon.min.js"></script>


您也可以使用 setZone("UTC") 关于 fromISO 的结果.

2) JavaScript 的内置 Date对象会将其解析为 UTC ( new Date(yourString) ),因为它的格式为 defined in the spec .然后,您可以使用其上的 UTC 方法来获取 UTC 信息( getUTCHours 等),或者您可以使用其上的本地日期/时间方法来获取本地信息( getHours 等)。您也可以使用 toISOString获取 UTC 字符串:

console.info(new Date('2019-06-25T05:00:00Z').toISOString());
<script src="https://moment.github.io/luxon/global/luxon.min.js"></script>


3) Moment也会很乐意这样做。

console.info(moment.utc('2019-06-25T05:00:00Z').toISOString());
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.26.0/moment.min.js"></script>


如果您需要 +00:00而不是 Z , 你可以抛出 replace在那里,或者与 Luxon 或 Moment 一起,他们提供了完整的格式选项。

关于javascript - 将 dateTime 字符串解析为 UTC,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62261219/

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