Basado en el documentation (y pruebas breves), moment.js crea envoltorios alrededor de objetos de fecha. La declaración:
var now = moment();
crea un objeto "momento" que en su corazón tiene una nueva fecha objeto creado como por new Date()
, por lo que las horas, minutos y segundos se establecerá en el momento actual.
La declaración:
var releaseDate = moment("2012-09-25");
crea un objeto momento que en su corazón tiene un nuevo objeto Date creado como por new Date(2012, 8, 25)
donde las horas, minutos y segundos todos se ponen a cero para la zona horaria local .
moment.diff
devuelve un valor basado en una la redondeado diferencia en ms entre las dos fechas. Para ver el valor total, pasan true
como tercer parámetro:
now.diff(releaseDate, 'days', true)
------------------------------^
Por lo tanto, dependerá de la hora del día cuando se ejecuta el código y la zona horaria local si now.diff(releaseDate, 'days')
es cero o uno, incluso cuando se ejecuta en la misma fecha local.
Si desea comparar simplemente las fechas, a continuación, utilizar:
var now = moment().startOf('day');
que permitirá establecer el tiempo de 00:00:00 en la zona horaria local.
he 1.7.0, i probado su código y me dieron 'DIFF: 0' - ¿estás seguro de nada había cambiado en sus moment.js? – rationalboss
Creo que es algo relacionado con las zonas horarias o utc/local. Si registro '.hours()' de 'releaseDate' y' now' arroja resultados diferentes para mí. Si uso 'var now = moment(). Sod()' [(docs)] (http://momentjs.com/docs/#/manipulating/sod/) funciona actualmente como se esperaba, pero no estoy seguro cuánto confío en eso. – manafire