当前位置: 首页 > 知识库问答 >
问题:

ISO-8601中的新日期引发“无效日期”[重复]

裴承安
2023-03-14

我有两个日期,都是有效的ISO-8601格式,我正在尝试将它们转换为日期对象。

console.log(new Date('2019-08-03T18:17:28.119Z'));
console.log(new Date('2019-05-09T08:25:22+0000'));
Output1: Sat Aug 03 2019 20:17:28 GMT+0200 (CEST)
Output2: Invalid Date

为什么JavaScript无法将第二个日期识别为有效的ISO-8601格式?

如何以这种格式创建Date对象?

共有1个答案

方波娃
2023-03-14

ECMA-262要求任何不符合其ISO 8601版本的内容都取决于实现。接近但不精确的格式可能会导致至少在某些浏览器中的日期无效。其他人可能更宽容。

在这种情况下,偏移量“0000”应该是“00:00”。同样,用空格替换“T”可能会导致无效日期,也可能不会,具体取决于实现。

js lang-js prettyprint-override">// Invalid date maybe
console.log(new Date('2019-05-09T08:25:22+0000').toString());

// valid
console.log(new Date('2019-05-09T08:25:22+00:00').toString());
 类似资料:
  • 问题内容: 需要有关将具有以下结构的ISO 8601日期转换为javascript的帮助/提示。 我想这样格式化日期: 我想保持此解决方案尽可能干净和最小。 问题答案: datejs可以解析以下内容,您可能想尝试一下。 编辑:正则 表达式版本 结果 Edit2: 我将时区更改为EST,现在我关注了 返回 基本上 返回 正则表达式部分只是将上述字符串转换为您所需的格式。

  • 我试图用ISO 8601格式解析一个日期,但有些时刻我不清楚。 例如,我有下一个日期:时区。 它是指莫斯科时间07:16还是10:16?我的意思是,我需要增加3个小时的日期或日期已经在莫斯科时间和时区只是显示它与UTC的差异? P、 我试图找到关于它的信息,但到处都是没有细节的常见格式描述。

  • 在PHP中通过< code>date('c')很容易获得ISO 8601日期字符串(例如,< code > 2004-02-12t 15:19:21 00:00 ),但是在Objective-C (iPhone)中如何获得它呢?有没有类似的捷径? 这是我发现的很长的路要走: 对于如此核心的东西来说,这似乎是一个非常严格的要求。

  • 问题内容: 我需要将字符串解析为类型。 我已经在标准库中找到了,但这不是很方便。 做这个的最好方式是什么? 问题答案: 该包可以解析不仅RFC 3339日期时间字符串像在的问题,还包括其他ISO 8601的日期和时间字符串不符合RFC 3339(如那些没有UTC偏移,或那些代表仅一个日期)。 请注意,这可能比更严格的方法更严格,但是它们两者都是相当宽容的,并且会尝试解释你传入的字符串。如果要消除任

  • 问题内容: 我试图以标准时间戳记从数据库中获取日期并将其显示为ISO8601。我无法轻松地在PHP中执行此操作,因此尝试在SELECT语句中进行操作。这是我所拥有的,但是显示错误: 我究竟做错了什么? 问题答案: 本必须在列表:

  • 问题内容: alert(new Date(‘2010-11-29’)); chrome,ff没问题,但是Safari会喊“无效日期”。为什么呢 编辑:好的,根据下面的评论,我使用了字符串解析并尝试了以下操作: 编辑 :似乎人们仍在这里着陆-今天,我将使用或完成此操作。Date-fns也非常轻巧。 问题答案: 该模式不是构造函数的官方支持格式。Firefox似乎支持它,但不要指望其他浏览器也这样做。