在javascript中以本地日期格式解析日期时间字符串(最好使用luxon)

Ank*_*nte 8 javascript datetime date luxon

假设我有一个日期时间字符串10/09/2019 10:03:00.000 AM

现在,如果我在美国,我会将其阅读为 2019 年 10 月 9 日,如果我在印度,我会将其阅读为 2019 年 9 月 10 日。

所以,我的问题是如何将此字符串解析为 Date 对象,以便根据本地时区对其进行解析。

我正在使用luxon,但是,纯 javascript 解决方案也可以使用。

sni*_*ack 6

使用支持在解析器中使用“宏”标记的最新版本的 Luxon:

> DateTime.fromFormat("10/09/2019 10:03:00.000 AM", "D hh:mm:ss.SSS a").toISO()
'2019-10-09T10:03:00.000-04:00'
> DateTime.fromFormat("10/09/2019 10:03:00.000 AM", "D hh:mm:ss.SSS a", { locale: "en-IN" }).toISO()
'2019-09-10T10:03:00.000-04:00'
Run Code Online (Sandbox Code Playgroud)

IMO,这个解决方案很脆弱,因为 Luxon 的解析器在这里非常严格,本质上要求日期部分在该语言环境中完全 匹配DateTime.toFormat,因此在 0-padding、斜线与连字符等方面存在差异。

  • 另请注意:“F”标记非常适合这种格式:`DateTime.fromFormat("10/09/2019 10:03:00.000 AM", "F")`。 (2认同)