我正在尝试 date-fns v2。
我在运行时遇到了一些错误:
parseISO("Apr 9, 2020, 12:00:00 am");
或者
parseISO("Apr 9, 2020, 12:00:00 am", "MMM M, YYYY, hh:mm:ss aaaa");
但这很好用:
new Date("Apr 9, 2020, 12:00:00 am");
我试图了解何时应该使用其中一种,但我找不到 parseISO() 的文档。
我正在尝试 date-fns v2。
我在运行时遇到了一些错误:
parseISO("Apr 9, 2020, 12:00:00 am");
或者
parseISO("Apr 9, 2020, 12:00:00 am", "MMM M, YYYY, hh:mm:ss aaaa");
但这很好用:
new Date("Apr 9, 2020, 12:00:00 am");
我试图了解何时应该使用其中一种,但我找不到 parseISO() 的文档。
parseISO
这里的文档。基本上parseISO
尝试解析包含 ISO 格式日期字符串的字符串,例如'2019-09-25T14:34:32.999Z'
.
您要解析的是国际化字符串。即'Apr 9, 2020, 12:00:00 am'
是美国地区格式的日期字符串。
new Date()
之所以有效,是因为它依赖于您的环境(浏览器或节点)的语言环境,您传递给它的字符串与您的语言环境的格式相匹配。如果您将传递法语区域设置格式的日期字符串,则很可能会失败。
要解析国际化字符串,您还可以查看parse
哪个也将采用传递日期字符串的格式。
如果您通过网络传递日期(如 HTTP REST API 或数据库),您应该已经决定了传递/存储日期时间的格式。通常它是 ISO 格式的日期字符串、自 1970 年以来 UTC 的毫秒数或任何其他适合您的情况。然后根据您的“电线”或“商店”的规格,您将执行parseISO
or new Date(milliseconds)
。
如果你做一些基于浏览器的网络应用程序,你应该考虑你的用户的本地。然后解析可能会变得很麻烦,因为您已经处理了用户的区域设置和/或时区。
Apr 9, 2020, 12:00:00 am
与预期的ISO 8601 格式不匹配parseDate
。这是正确 ISO 8601 日期字符串的示例:2020-11-20T10:36:01.516Z
.
请注意,MDN 强烈反对使用new Date(dateString)
or Date.parse(dateString)
:
注意:由于浏览器的差异和不一致,强烈建议不要使用构造函数解析日期字符串
Date
(和Date.parse()
,其工作方式相同) 。
(来源)
随意观察:第四个国会大厦不M
应该是小写字母d
吗?从MMM M, YYYY, hh:mm:ss aaaa
到 MMM d, YYYY, hh:mm:ss aaaa