有什么区别:
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)
虽然这是一个旧帖子,但我会为比我晚访问这里的人留下我的答案。
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的瞬间捕捉。