Javascript 新日期(Date.parse(string))和新日期(string)之间的技术区别是什么?

Javascript 新日期(Date.parse(string))和新日期(string)之间的技术区别是什么?,javascript,string,date,Javascript,String,Date,给定以下标准化日期字符串: var dateString = "2010-12-23T23:12:00"; 我可以使用以下代码片段之一对其进行解析: 示例1: var date = new Date(dateString); var date = new Date(Date.parse(dateString)); 示例2: var date = new Date(dateString); var date = new Date(Date.parse(dateString)); 根据,

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

var dateString = "2010-12-23T23:12:00";
我可以使用以下代码片段之一对其进行解析:

示例1:

var date = new Date(dateString);
var date = new Date(Date.parse(dateString));
示例2:

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

根据,只有当字符串的格式为
YYYY-MM-DDTHH:MM:ss.sssZ
时,才能很好地定义日期解析。但是,如果字符串是这种格式,我可以想象这两个示例总是返回完全相同的结果


这两种从标准化日期字符串创建日期对象的方法在技术上有什么不同?它们是否返回不同的结果?

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

从:

15.9.3.2新日期(值):

var date = new Date(dateString);
var date = new Date(Date.parse(dateString));
  • 调用ToPrimitive(值)

  • 如果类型(结果(1))是字符串,则转到步骤5

  • 以与解析方法(15.9.4.2)完全相同的方式将结果(1)解析为日期;设V为该日期的时间值
  • 调用
    newdate(string)
    时,它将以与
    Date.parse(string)
    完全相同的方式解析字符串。因此,通过调用
    newdate(Date.parse(string))
    我们得到了与
    newdate(string)
    完全相同的结果,但要付出额外方法调用的性能代价