【问题标题】:What are the technical differences between new Date(Date.parse(string)) and new Date(string)?new Date(Date.parse(string)) 和 new Date(string) 之间的技术区别是什么?
【发布时间】:2015-08-21 22:36:35
【问题描述】:

给定以下标准化日期字符串:

var dateString = "2010-12-23T23:12:00";

我可以使用以下 sn-ps 代码之一来解析它:

示例 1:

var date = new Date(dateString);

示例 2:

var date = new Date(Date.parse(dateString));

根据this answer,只有当字符串的格式为YYYY-MM-DDTHH:mm:ss.sssZ 时,日期解析才能得到很好的定义。但是,如果字符串采用这种格式,我想这两个示例将始终返回完全相同的结果。

这两种从标准化日期字符串创建日期对象的方法之间的技术差异是什么,它们是否会返回不同的结果?

【问题讨论】:

    标签: javascript string date


    【解决方案1】:

    我在写完这个问题后不久就找到了答案。根据 ECMAScript 语言规范,对于字符串参数,这两种方法将在符合标准的浏览器中产生相同的结果。

    来自ECMAScript Language Specification

    15.9.3.2 新日期(值):

    1. 调用 ToPrimitive(值)。

    2. 如果 Type(Result(1)) 为 String,则转到步骤 5。

    ...

    1. 将 Result(1) 解析为日期,其方式与解析方法 (15.9.4.2) 完全相同;设 V 为该日期的时间值。

    当调用new Date(string) 时,它会以与Date.parse(string) 完全相同的方式解析字符串。因此,通过调用new Date(Date.parse(string)),我们得到与new Date(string) 完全相同的结果,但代价是额外的方法调用。

    【讨论】:

      猜你喜欢
      • 2019-11-12
      • 1970-01-01
      • 1970-01-01
      • 2017-02-14
      • 1970-01-01
      • 2020-03-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多