将日期时间字符串解析为 UTC
Parse dateTime string as UTC
在我尝试过的每个日期时间库中,时区一直是个难题。所以问题来了,假设您有一个以字符串形式提供的 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 区域,但那是因为它在 output:
上格式化
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>
您还可以对 fromISO
的结果使用 setZone("UTC")
。
2) JavaScript 的内置 Date
对象会将其解析为 UTC (new Date(yourString)
),因为它的格式为 defined in the spec。然后你可以在它上面使用 UTC 方法来获取 UTC 信息(getUTCHours
,等等),或者你可以在它上面使用本地 date/time 方法来获取本地信息(getHours
, ETC。)。您还可以使用 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,他们提供完整的格式选项。
在我尝试过的每个日期时间库中,时区一直是个难题。所以问题来了,假设您有一个以字符串形式提供的 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 区域,但那是因为它在 output:
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>
您还可以对 fromISO
的结果使用 setZone("UTC")
。
2) JavaScript 的内置 Date
对象会将其解析为 UTC (new Date(yourString)
),因为它的格式为 defined in the spec。然后你可以在它上面使用 UTC 方法来获取 UTC 信息(getUTCHours
,等等),或者你可以在它上面使用本地 date/time 方法来获取本地信息(getHours
, ETC。)。您还可以使用 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,他们提供完整的格式选项。