»
EnglishFrenchVietnamese

Print - Date Difference script - JavaScriptBank.com

Full version: jsB@nk » Time » Validation » Date Difference script
URL: https://www.javascriptbank.com/date-difference-script.html

Date Difference script © JavaScriptBank.comEnter two dates (including the time!) and this script will display the number of weeks, days, hours, minutes, and seconds between the two. The seconds field is optional, too. For an example, try entering your birthdate and compare it to today's date.

Full version: jsB@nk » Time » Validation » Date Difference script
URL: https://www.javascriptbank.com/date-difference-script.html



JavaScript
<script language="JavaScript">// Ronnie T. Moorefunction isValidDate(dateStr) {// Date validation function courtesty of // Sandeep V. Tamhankar ([email protected]) -->// Checks for the following valid date formats:// MM/DD/YY   MM/DD/YYYY   MM-DD-YY   MM-DD-YYYYvar datePat = /^(\d{1,2})(\/|-)(\d{1,2})\2(\d{4})$/; // requires 4 digit yearvar matchArray = dateStr.match(datePat); // is the format ok?if (matchArray == null) {alert(dateStr + " Date is not in a valid format.")return false;}month = matchArray[1]; // parse date into variablesday = matchArray[3];year = matchArray[4];if (month < 1 || month > 12) { // check month rangealert("Month must be between 1 and 12.");return false;}if (day < 1 || day > 31) {alert("Day must be between 1 and 31.");return false;}if ((month==4 || month==6 || month==9 || month==11) && day==31) {alert("Month "+month+" doesn't have 31 days!")return false;}if (month == 2) { // check for february 29thvar isleap = (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0));if (day>29 || (day==29 && !isleap)) {alert("February " + year + " doesn't have " + day + " days!");return false;   }}return true;}function isValidTime(timeStr) {// Time validation function courtesty of // Sandeep V. Tamhankar ([email protected]) -->// Checks if time is in HH:MM:SS AM/PM format.// The seconds and AM/PM are optional.var timePat = /^(\d{1,2}):(\d{2})(:(\d{2}))?(\s?(AM|am|PM|pm))?$/;var matchArray = timeStr.match(timePat);if (matchArray == null) {alert("Time is not in a valid format.");return false;}hour = matchArray[1];minute = matchArray[2];second = matchArray[4];ampm = matchArray[6];if (second=="") { second = null; }if (ampm=="") { ampm = null }if (hour < 0  || hour > 23) {alert("Hour must be between 1 and 12. (or 0 and 23 for military time)");return false;}if (hour <= 12 && ampm == null) {if (confirm("Please indicate which time format you are using.  OK = Standard Time, CANCEL = Military Time")) {alert("You must specify AM or PM.");return false;   }}if  (hour > 12 && ampm != null) {alert("You can't specify AM or PM for military time.");return false;}if (minute < 0 || minute > 59) {alert ("Minute must be between 0 and 59.");return false;}if (second != null && (second < 0 || second > 59)) {alert ("Second must be between 0 and 59.");return false;}return true;}function dateDiff(dateform) {date1 = new Date();date2 = new Date();diff  = new Date();if (isValidDate(dateform.firstdate.value) && isValidTime(dateform.firsttime.value)) { // Validates first date date1temp = new Date(dateform.firstdate.value + " " + dateform.firsttime.value);date1.setTime(date1temp.getTime());}else return false; // otherwise exitsif (isValidDate(dateform.seconddate.value) && isValidTime(dateform.secondtime.value)) { // Validates second date date2temp = new Date(dateform.seconddate.value + " " + dateform.secondtime.value);date2.setTime(date2temp.getTime());}else return false; // otherwise exits// sets difference date to difference of first date and second datediff.setTime(Math.abs(date1.getTime() - date2.getTime()));timediff = diff.getTime();weeks = Math.floor(timediff / (1000 * 60 * 60 * 24 * 7));timediff -= weeks * (1000 * 60 * 60 * 24 * 7);days = Math.floor(timediff / (1000 * 60 * 60 * 24)); timediff -= days * (1000 * 60 * 60 * 24);hours = Math.floor(timediff / (1000 * 60 * 60)); timediff -= hours * (1000 * 60 * 60);mins = Math.floor(timediff / (1000 * 60)); timediff -= mins * (1000 * 60);secs = Math.floor(timediff / 1000); timediff -= secs * 1000;dateform.difference.value = weeks + " weeks, " + days + " days, " + hours + " hours, " + mins + " minutes, and " + secs + " seconds";return false; // form should never submit, returns false}//  End --></script><!--    This script downloaded from www.JavaScriptBank.com    Come to view and download over 2000+ free javascript at www.JavaScriptBank.com-->


HTML
<form onsubmit="return dateDiff(this);"><table><tbody><tr><td><pre>First Date:   Date: <input type="text" name="firstdate" value="" size="10" maxlength="10">  (MM/DD/YYYY format)              Time: <input type="text" name="firsttime" value="" size="10" maxlength="10">  (HH:MM:SS format)Second Date:  Date: <input type="text" name="seconddate" value="" size="10" maxlength="10">  (MM/DD/YYYY format)              Time: <input type="text" name="secondtime" value="" size="10" maxlength="10">  (HH:MM:SS format)<input type="submit" value="Calculate Difference!">Date Difference:<br><input type="text" name="difference" value="" size="60"></pre></td></tr></tbody></table></form><!--    This script downloaded from www.JavaScriptBank.com    Come to view and download over 2000+ free javascript at www.JavaScriptBank.com-->