【发布时间】:2021-01-30 14:30:18
【问题描述】:
我想将字符串转换为日期对象。时间可能采用不同的格式,例如 2020-01-01 或 2020/01/01,也可能精确到分钟。
JavaScript 中的时间解析有时会产生奇怪的结果。
new Date("2021-01-01") // Fri Jan 01 2021 09:00:00 GMT+0900
new Date("2021-01-01 00:00") // Wed Jan 01 2020 00:00:00 GMT+0900
我输入的第一个日期被认为是 UTC,第二个被认为是本地日期。
有什么方法可以正确解析它们吗?
【问题讨论】:
-
考虑使用momentjs 来轻松管理随时间推移的功能。
-
第二个不是符合标准的字符串 - JavaScript 规范说在日期和时间之间需要
T,空格将导致特定于实现的解析。即使是这样,规范也很明确 - date 字符串被解析为 UTC,date-time 字符串被解析为本地时间。 -
我的要求是字符串到时间的转换。
new Date()方法似乎在不同的情况下返回不同的时间,例如“2020-01-01”和“2020-01-01 00:00”,这两个看似相同的时间以不同的方式解析。也许我应该使用 moment.js -
正如我所说,根据规范,date 字符串和 date-time 字符串的处理方式确实不同。您需要使用相同的格式来获得可重复的结果。见Converting a string to a date in JavaScript 和I have a UTC string and I want to convert it to UTC Date Object in JavaScript
-
@VLAZ 你是对的,但我认为结果有点令人困惑。在 moment.js 或人眼中,“2020-01-01”和“2020-01-01 00:00”是相同的时间。
标签: javascript time