
JavaScript Programs Calculating the Number of Days Between Any Two Dates
A common date calculation involves figuring out the number of days between any two dates. For example, you might need to know the number of days between now and the end of the year:
The JavaScript CodeThe following JavaScript function accomplishes this:<script language="JavaScript" type="text/javascript"> <! function days_between(date1, date2) { // The number of milliseconds in one day var ONE_DAY = 1000 * 60 * 60 * 24 // Convert both dates to milliseconds var date1_ms = date1.getTime() var date2_ms = date2.getTime() // Calculate the difference in milliseconds var difference_ms = Math.abs(date1_ms  date2_ms) // Convert back to days and return return Math.round(difference_ms/ONE_DAY) } //> </script>This function accepts two Date object arguments—date1 and date2. Note that is doesn't matter which date is earlier or later because this function calculates the absolute value of the difference between them. The constant ONE_DAY stores the number of milliseconds in a day, and then the two dates are converted into milliseconds using the getTime() method. The results are stored in the variables date1_ms and date2_ms. Next the following statement calculates the absolute value, in milliseconds, of the difference between the two dates: var difference_ms = Math.abs(date1_ms  date2_ms)This difference is then converted into days by dividing it by the ONE_DAYS constant. (Math.round() ensures an integer result.) Here's the JavaScript code that uses this function to calculate the number of days left until the end of the year: <script language="JavaScript" type="text/javascript"> <! // Store the current date and time var current_date = new Date() // Store the date of the next New Year's Day var new_years_date = new Date() new_years_date.setYear(new_years_date.getFullYear() + 1) new_years_date.setMonth(0) new_years_date.setDate(1) // Call the days_between function var days_left = days_between(current_date, new_years_date) // Write the result to the page if (days_left > 1) { document.write("<b>There are " + days_left + " days left this year.</b>") } else { document.write("<b>There is " + days_left + " day left this year.</b>") } //> </script> Copyright © 1995  2014 Paul McFedries and Logophilia Limited 