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

Javascript的“new Date()”为“2011-02-1”和“2011-02-01”返回不同的日期[重复]

司徒啸
2023-03-14

这是我的实验:

> new Date('2011-02-1')
2011-02-01T08:00:00.000Z
> new Date('2011-02-01')
2011-02-01T00:00:00.000Z

有人知道为什么两者相差8小时吗?

谢谢

共有1个答案

胡致远
2023-03-14

这实际上取决于浏览器或JavaScript运行时实现来确定发生了什么。构造函数符合格式YYYY-MM-DDTHH:MM:ss。sssZ是ISO 8601扩展格式的简化版。如果解析失败,则会发生特定于实现的情况。

从本质上讲,由于您未能为2011-02-1指定DD,因此由浏览器决定您将获得什么。例如,在Google Chrome和Firefox中,我得到了2011-02-01T00:00:00.000Z,而在Safari中,我只得到了一个错误,无效日期

请参阅ECMAScript 5规范:

[...]当给定任何不符合日期时间字符串格式(15.9.1.15)并且无法在该实现中由toStringtoUTCString方法生成的字符串值时,由Date.parse生成的值依赖于实现。

请注意,构造函数使用与日期相同的解析算法。解析。这就是为什么不鼓励在构造函数中使用字符串。使用标准化的多参数版本。参见MDN。

 类似资料:
  • 我如何在Java中执行这种转换? 目前,我正在做: 但是,这会导致不正确的格式。它给出了以下输出:

  • 我在Python上使用mysqlclient包的MySQLdb得到这个错误。 导致错误的代码: 我可以正确插入其余的行,但当我尝试插入这个datetime对象时,它会崩溃。 数据库中的字段是一个timestamp字段,它与其余的datetime对象一起工作,但当它试图使该语句崩溃时,不知道为什么。 提前道谢。

  • FCC准备了关于美国宽带互联网接入状况的报告,数据对于测试的连接参数是有用的。我在这里列出关键图表,但完整的报告可在这里。 一、连通性仿真(dummynet) WebPagetest中连通性仿真的目的:是提供来自测试代理程序“最后一公里”的性能(但不要在进行物理分布的服务器上更改延迟)。这意味着,目标是从FCC报告中真实地模拟网络图,公共互联网段正常路由: 二、延迟和广告带宽 在FCC测试中使用的

  • 在windows上的MongoDB Shell中,如果运行值为的查询 它实际上似乎在寻找 如果您直接在Mongo Shell中输入“new ISODate('0001-01-01T00:00:00Z')”,您可以在返回ISODate(“1901-01-01T00:00:00Z”)时看到正在进行的转换。 奇怪的是,当您使用“new Date”而不是“new ISODate”时,请输入: 它返回正确的

  • 问题内容: 我正在尝试在CRM 2011的报告中使用CRM CRMAFAF筛选器。但是我找不到有关如何执行此操作的任何示例。需要更改查询内容以过滤引号,还需要添加什么参数。 问题答案: 这是您可以查看的一个参考:http : //blogs.msdn.com/b/crm/archive/2009/03/06/microsoft-dynamics-crm-pre- filtering-tips.as