var day1 = new Date( '2/29/2000 23:59:58' );
var day2 = new Date( 'Feb 27, 2009 00:00:00' );
alert( day2 - day1 )
var day1 = new Date( '2/29/2000 23:59:58' );
var day2 = new Date( 'Feb 27, 2009 00:00:00' );
var units = 'Years,Days,Hours,Minutes,Seconds'.split( ',' );
var vals = [ 365 * 24 * 60 * 60, 24 * 60 * 60, 60 * 60, 60 ];
var msg = '';
var secs = Math.abs( Math.floor( ( day2 - day1 ) / 1000 ) );
for ( var i = 0; i < vals.length; i++ ) {
var result = Math.floor( secs / vals[ i ] );
if ( result ) {
msg += '\n' + units[ i ] + ' ' + result;
}
secs -= result * vals[ i ];
}
if ( secs ) {
msg += '\n' + units[ i ] + ' ' + secs;
}
alert( msg.substr( 1 ) );
alert( new Date( 2009, 2, 0 ) );
var day1 = new Date( 'Dec 29, 1977 23:59:58' );
var day2 = new Date( 'Mar 2, 2009 12:00:00' );
var diff = [
day2.getFullYear() - day1.getFullYear(),
day2.getMonth() - day1.getMonth(),
day2.getDate() - day1.getDate(),
day2.getHours() - day1.getHours(),
day2.getMinutes() - day1.getMinutes(),
day2.getSeconds() - day1.getSeconds()
];
var delta = [ 12, 31, 24, 60, 60 ];
delta[ 1 ] = ( new Date( day2.getFullYear(), day2.getMonth(), 0 ) ).getDate();
for ( var i = diff.length - 1; i > -1; i-- ) {
if ( diff[ i ] < 0 ) {
if ( i > -1 ) {
var j = i - 1;
diff[ i ] += delta[ j ];
diff[ j ]--;
} else {
alert( 'Negative year difference: ' + diff[ 0 ] );
}
}
}
Difference = 31 Years 70 Days 12 Hours 2 Seconds
function isLeapYear( y ) {
return ( new Date( y, 1, 29 ).getDate() == 29 );
}
var leapdays = 0;
if ( ( day1.getMonth() < 2 ) && ( day1.getDate() < 29 ) ) {
if ( isLeapYear( day1.getFullYear() ) ) {
leapdays++;
}
}
for ( var year = day1.getFullYear() + 1; year < day2.getFullYear(); year++ ) {
if ( isLeapYear( year ) ) {
leapdays++;
}
}
if ( isLeapYear( day2.getFullYear() ) && ( ( day2.getMonth() > 1 ) || ( ( day2.getMonth() == 1 ) && ( day2.getDate() > 28 ) ) ) ) {
leapdays++;
}
Years: 31
Months: 2
Days : 0
Hours: 12
Minutes: 0
Seconds : 2
Leap Days: 8
Have a question about something in this article? You can receive help directly from the article author. Sign up for a free trial to get started.
Comments (4)
Commented:
Commented:
var date = new Date(2009,11,1,0,0,0); // months start at 0
And before you compare dates like
var today = new Date(); // today
var someDate(2009,11,2);
you should normalise such dates by doing
today.setHours(0,0,0,0); // set hours, minutes, seconds and milliseconds to 0
so you can test
if (someDate.getTime() > today.getTime()) ....
Author
Commented:I had not realized that setHours() also had optional parameters for minutes, seconds & milliseconds!
Thanks
Bob
Commented: