Date.parse()和.getTime()之间的区别

fai*_*aid 9 javascript date

有什么区别:

dt = new Date();
ms = Date.parse(dt);
Run Code Online (Sandbox Code Playgroud)

dt = new Date();
ms = dt.getTime();
Run Code Online (Sandbox Code Playgroud)

他们有相同的输出,但有什么区别?我应该使用哪一个?

Jon*_*eet 11

第一个版本将a转换Date为字符串并对其进行解析,这是一个非常毫无意义的事情 - 我怀疑在某些情况下会丢失信息.(想象一下在DST过渡期间,当时钟返回时 - 相同的本地时间在那个小时内出现两次,并且我不知道字符串表示是否会区分两次出现.)

第二个是我认为更清洁.在一般情况下,你应该避免字符串转换,当你不需要他们-他们往往会导致一些问题,并没有什么在你正在试图做的是什么本质有关字符串表示.

除非你真正需要Date其他地方,这将是更简单的使用方法:

ms = new Date().getTime()
Run Code Online (Sandbox Code Playgroud)

甚至更好,使用静态now()方法:

ms = Date.now()
Run Code Online (Sandbox Code Playgroud)


mom*_*cow 6

虽然这是一个旧帖子,但我会为比我晚访问这里的人留下我的答案。

dt = new Date();

// often false, occasionally true
Date.parse(dt) === dt.getTime()
Run Code Online (Sandbox Code Playgroud)

这是因为当您执行内部调用时,您将丢失有关毫秒的信息。至少对于 Chrome (63.0.3239.84) 和 Firfox Quantum (57.0.3) 来说,它们是这样实现Date 对象的方法的。您可以自己尝试以下示例。dt.toString()Date.parse(dt)toString()

dt = new Date('2018.1.1 01:01:01.001')
dt.getTime() // 1514739661001
Date.parse(dt) // 1514739661000
Run Code Online (Sandbox Code Playgroud)

Date.parse(dt)等于dt.getTime()只有dt在那个毫秒等于0的瞬间捕捉。