Friday, May 10, 2024
 Popular · Latest · Hot · Upcoming
145
rated 0 times [  146] [ 1]  / answers: 1 / hits: 38980  / 12 Years ago, wed, september 26, 2012, 12:00:00

I'm using moment.js 1.7.0 to try and compare today's date with another date but the diff function is saying they are 1 day apart for some reason.



code:



var releaseDate = moment(2012-09-25);
var now = moment(); //Today is 2012-09-25, same as releaseDate
console.log(RELEASE: + releaseDate.format(YYYY-MM-DD));
console.log(NOW: + now.format(YYYY-MM-DD));
console.log(DIFF: + now.diff(releaseDate, 'days'));


console:



RELEASE: 2012-09-25
NOW: 2012-09-25
DIFF: 1


Ideas?


More From » momentjs

 Answers
30

Based on the documentation (and brief testing), moment.js creates wrappers around date objects. The statement:



var now = moment();


creates a moment object that at its heart has a new Date object created as if by new Date(), so hours, minutes and seconds will be set to the current time.



The statement:



var releaseDate = moment(2012-09-25);


creates a moment object that at its heart has a new Date object created as if by new Date(2012, 8, 25) where the hours, minutes and seconds will all be set to zero for the local time zone.



moment.diff returns a value based on a the rounded difference in ms between the two dates. To see the full value, pass true as the third parameter:



 now.diff(releaseDate, 'days', true)
------------------------------^


So it will depend on the time of day when the code is run and the local time zone whether now.diff(releaseDate, 'days') is zero or one, even when run on the same local date.



If you want to compare just dates, then use:



var now = moment().startOf('day'); 


which will set the time to 00:00:00 in the local time zone.


[#82910] Monday, September 24, 2012, 12 Years  [reply] [flag answer]
Only authorized users can answer the question. Please sign in first, or register a free account.
miles

Total Points: 256
Total Questions: 111
Total Answers: 104

Location: Benin
Member since Fri, Mar 24, 2023
1 Year ago
;