为什么我可以直接减去两个Date对象?

时间:2018-06-02 12:13:19

标签: javascript

我一直在想。显然,如果我这样做

const a = new Date();

,a将保存对Date实例的引用。它有方法等。那么,为什么我可以使用简单的 - 运算符在两者之间减去两个日期?

const a = new Date();
const b = new Date();
console.log(a - b);

我不是在这里减去两个物体吗?日期"延伸"数字在某种程度上?并且,对于我自己,我可以定义这些运算符对我自己的类所做的事情,类似于C#如何通过运算符重载来完成它吗?

3 个答案:

答案 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);