给定以下标准化日期字符串:
var dateString = "2010-12-23T23:12:00";
我可以使用以下代码片段之一来解析它:
示例 1:
var date = new Date(dateString);
示例 2:
var date = new Date(Date.parse(dateString));
<小时/>
根据this answer ,只有当字符串的格式为 YYYY-MM-DDTHH:mm:ss.sssZ
时,日期解析才是明确定义的。但是,如果字符串采用这种格式,我想这两个示例将始终返回完全相同的结果。
这两种从标准化日期字符串创建日期对象的方法之间有什么技术差异,它们是否会返回不同的结果?
最佳答案
我写完这个问题后不久就找到了答案。根据 ECMAScript 语言规范,对于字符串参数,这两种方法将在符合标准的浏览器中产生相同的结果。
来自ECMAScript Language Specification :
15.9.3.2 新日期(值):
Call ToPrimitive(value).
If Type(Result(1)) is String, then go to step 5.
...
- Parse Result(1) as a date, in exactly the same manner as for the parse method (15.9.4.2); let V be the time value for this date.
当调用 new Date(string)
时,它会以与 Date.parse(string)
完全相同的方式解析字符串。因此,通过调用 new Date(Date.parse(string))
我们得到与 new Date(string)
完全相同的结果,但代价是额外的方法调用的性能成本.
关于javascript - new Date(Date.parse(string)) 和 new Date(string) 之间有哪些技术差异?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32150233/