Date.parse() 和 .getTime() 之间的区别
Difference between Date.parse() and .getTime()
之间的主要区别是什么:
dt = new Date();
ms = Date.parse(dt);
和
dt = new Date();
ms = dt.getTime();
它们具有相同的输出,但有什么区别? 我应该使用哪一个?
第一个版本将Date
转换为字符串并解析它,这是一件毫无意义的事情 - 在某些情况下可能会丢失信息,我怀疑。(想象一下,在 DST 转换期间,当时钟倒流时 - 相同的本地时间在该小时内出现两次,我不知道字符串表示形式是否会区分这两种情况。
在我看来,第二个要干净得多。通常,当您不需要字符串转换时,您应该避免它们 - 它们通常会导致问题,并且您尝试执行的操作本质上与字符串表示无关。
除非您确实需要在其他地方使用该Date
,否则使用起来会更简单:
ms = new Date().getTime()
或者更好的是,使用静态now()
方法:
ms = Date.now()
虽然这是一个旧帖子,但我会把我的答案留给比我晚访问这里的人。
dt = new Date();
// often false, occasionally true
Date.parse(dt) === dt.getTime()
这是因为当您执行dt.toString()
时,您将丢失有关毫秒的信息,这些信息由Date.parse(dt)
内部调用。至少对于Chrome(63.0.3239.84)和Firfox Quantum(57.0.3),它们以这种方式实现了Date对象的toString()
方法。您可以自己尝试以下示例。
dt = new Date('2018.1.1 01:01:01.001')
dt.getTime() // 1514739661001
Date.parse(dt) // 1514739661000
仅当在毫秒等于 0 的时刻捕获dt
时,Date.parse(dt)
才等于 dt.getTime()
。
Date.parse(dt)
parse 函数将 ToString 运算符应用于其参数,并将生成的字符串解释为日期;它返回一个数字,即与日期对应的 UTC 时间值。字符串可以解释为本地时间、UTC 时间或其他时区的时间,具体取决于字符串的内容。
获取时间()
根据通用时间返回与指定日期的时间对应的数值。
性能将是最大的区别。 在这两种情况下,您都分配一个 Date 实例。 在第一个示例中,您将日期实例传递给 parse(),它需要一个字符串。JavaScript 引擎将在 Date 上调用 toString(),这也将为日期分配一个 String。 基本上,它与以下相同:
dt = new Date(); // allocate a Date
dateString = dt.toString(); // allocate a String
ms = Date.parse(dateString); // Total: 2 allocations
在第二个示例中,您将在 Date 实例上调用 getTime() 方法,这将消除字符串分配。
dt = new Date(); // allocate a Date
ms = dt.getTime(); // Total: 1 allocation
消除所有分配的另一种选择是调用 Date.now():
ms = Date.now(); // Total: 0 allocations
这将直接返回以毫秒为单位的时间,而无需构造其他对象。
- 全局变量和全局对象的属性之间有什么区别吗
- JavaScript中的函数和对象之间没有区别吗?
- 在下划线中使用_(obj).map(callback)和_.map(obj,callback)之间的区别
- javascript函数的:和=之间的区别
- 什么's本地node.js服务器和python简单http服务器之间的区别
- 函数中this和var之间的区别
- “util.inherits”和在NodeJS中扩展原型之间的区别
- Math.min()和Math.max()之间有什么区别?在Javascript中
- webpack开发模式和生产构建模式之间有什么区别
- servlet和代理servlet之间的区别
- Javascript 类型未定义和 void 之间的区别
- Javascript-defineProperty和直接在对象上定义函数之间的区别
- 关于承诺/A+规范,术语“当时可”和“承诺”之间有什么区别
- 布局引擎和javascript引擎之间的区别
- 什么's extjs中的mon()和on()之间的区别
- type=text/javascript和language=javascript之间的区别
- 函数()和新函数()之间的区别
- JavaScript中let和var之间的区别
- 蓝鸟的done()和spread()之间的区别
- Node.js HTTP/NET——连接和请求之间的区别