const daysFromNow = (date) => Math.round((date-Date.now())/(1000*3600*24)) console.log(daysFromNow(new Date('07/04/2020'))); //result is -534Teniendo en cuenta lo anterior, ¿por qué funciona? He leído que .now() devuelve el ms desde 1970. ¿La fecha pasada también tiene un valor de ms desde 1970?
¿La fecha pasada también tiene un valor de ms desde 1970?
El objeto Fecha representa un momento específico en la tierra, por lo que sí, puede recuperar los milisegundos desde 1970 en milisegundos.
Un objeto Date tiene una función valueOf que devuelve el valor primitivo de Date:
El número de milisegundos entre el 1 de enero de 1970 00:00:00 UTC y la fecha dada.
Entonces (new Date()).valueOf() y Date.now() son equivalentes:
console.log((new Date()).valueOf()) console.log(Date.now()) Y valueOf se llama para la conversión en el caso de la date - Date.now() porque date es un objeto Date y Date.now() devuelve un número.
Aquí un ejemplo de un objeto personalizado con una función valueOf :
let test = { valueOf() { return 5; } } console.log(test - 1);Eso es trabajo debido a la propiedad valueOf . Esa propiedad devuelve un número, implementado en todos los objetos en js. También puedes dominarlo en tus objetos.
Aquí un ejemplo de uso para crear la función add chain js.
function add(x) { const fn = (y) => add(x + y); fn.valueOf = () => x; return fn; } const addTen = add(5)(5); console.log(addTen + 1) // 11