我一直在想。显然,如果我这样做
const a = new Date();
,a将保存对Date实例的引用。它有方法等。那么,为什么我可以使用简单的 - 运算符在两者之间减去两个日期?
const a = new Date();
const b = new Date();
console.log(a - b);
我不是在这里减去两个物体吗?日期"延伸"数字在某种程度上?并且,对于我自己,我可以定义这些运算符对我自己的类所做的事情,类似于C#如何通过运算符重载来完成它吗?
答案 0 :(得分:1)
这是因为valueOf。
它不仅适用于Date
个对象。您也可以在对象中使用valueOf
。
const a = {}
a.valueOf = () => 100
console.log(a + 1) // 101

答案 1 :(得分:0)
两个日期之间的差异,以毫秒为单位
const a = new Date();
console.log( a.getTime() ); // 1527942328972
console.log( Math.abs( a ) ); // 1527942328972
const b = new Date( "2018/02/01" );
const diff = Math.abs( a - b );
const diff1 = a.getTime() - b.getTime();
console.log( diff ); // 10509974822
console.log( diff1 ); // 10509974822
答案 2 :(得分:-3)
你可以用毫秒来获得差异。
var a = new Date();
var b = new Date();
var diff = Math.abs(a.getTime() - b.getTime());
console.log(diff);
您可以从两个日期获得天数的差异。
var a = new Date();
var b = new Date( "2018/5/01" );
var timeDiff = Math.abs(a.getTime() - b.getTime());
var diffDays = Math.ceil(timeDiff / (1000 * 3600 * 24));
console.log(diffDays);