"Date
objects contain a Number
that represents milliseconds since 1 January 1970 UTC." MDN
date2 - date1
returns the difference in milliseconds. The conversion is described in MDN:
The [@@toPrimitive]()
method of the Date
object returns a primitive
value, that is either of type number
or of type string
.
If hint
is string
or default
, [@@toPrimitive]()
tries to call the
toString
method. If the toString property does not exist, it tries to
call the valueOf
method and if the valueOf
does not exist either,
[@@toPrimitive]()
throws a TypeError
.
If hint
is number
, [@@toPrimitive]()
first tries to call valueOf
, and
if that fails, it calls toString
.
JavaScript calls the [@@toPrimitive]()
method to convert an object to
a primitive value. You rarely need to invoke the [@@toPrimitive]()
method yourself; JavaScript automatically invokes it when encountering
an object where a primitive value is expected.
Math.abs(date2 - date1) / (1000 * 60 * 60 * 24)
converts the milliseconds to days.