为什么这些Date对象不同?

时间:2017-05-08 16:22:25

标签: javascript date

我想知道为什么这两个Date对象在控制台中有不同的输出。在我看来它应该是相同的,但我可能是错的:)

var twoLinesSetup = new Date();
twoLinesSetup.setHours(0, 0, 0);
var inlineSetup = new Date().setHours(0, 0, 0)

console.log('twoLinesSetup', twoLinesSetup);
console.log('inlineSetup', inlineSetup);

和控制台

  

twoLinesSetup:2017年5月8日星期一00:00:00 GMT + 0200

     

inlineSetup:1494194400521

为什么会这样?

3 个答案:

答案 0 :(得分:9)

twoLinesSetup包含实例化Date构造函数的返回值,该构造函数返回一个新的Date实例对象。

inlineSetup包含setHours方法的返回值,该方法返回the number of milliseconds since 1 January 1970 00:00:00 UTC

答案 1 :(得分:2)

inlineSetup存储setHours的返回值。日期对象与1970年1月1日午夜之间的“A Number, representing the number of milliseconds

twoLinesSetup是一个实际的对象,你可以操作它。控制台输出 - “toString”方法,如果你想要它,就是你看到的格式化字符串表示。

理论上,你应该通过twoLinesSetup.getTime()看到相同的数字。

答案 2 :(得分:0)

您要将setHours()来电的返回值分配给inlineSetup。这不是Date对象,而是一个表示日期毫秒的数字。