Advertisement
EmilySamantha80

Validate date/time input

Aug 8th, 2018
232
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. // Validates date/time value (mm/dd/yyyy hh:mm:ss AM|PM)
  2. function validateDateTime(value, errorOnEmpty) {
  3.     // capture all the parts (mm/dd/yyyy hh:mm:ss AM|PM)
  4.     var matches = value.match(/^(\d{1,2})\/(\d{1,2})\/(\d{4}) (\d{1,2}):(\d{2}):(\d{2})\s*(AM|PM)$/i);
  5.  
  6.     var isValid = true;
  7.  
  8.     if (errorOnEmpty == true && (value == '' || value == null)) {
  9.         // invalid
  10.         isValid = false;
  11.     } else if (value != '' && value != null) {
  12.         //alt:
  13.         // value.match(/^(\d{2}).(\d{2}).(\d{4}).(\d{2}).(\d{2}).(\d{2})$/);
  14.         // also matches 22/05/2013 11:23:22 and 22a0592013,11@23a22
  15.         if (matches === null) {
  16.             // invalid
  17.             isValid = false;
  18.         } else {
  19.             // now lets check the date sanity
  20.             var year = parseInt(matches[3], 10);
  21.             var month = parseInt(matches[2], 10) - 1; // months are 0-11
  22.             var day = parseInt(matches[1], 10);
  23.             var hour = parseInt(matches[4], 10);
  24.             var minute = parseInt(matches[5], 10);
  25.             var second = parseInt(matches[6], 10);
  26.             // Convert AM/PM values to 24 hour time
  27.             if (matches[7].toUpperCase() == 'PM') {
  28.                 if (hour < 12) {
  29.                     hour = hour + 12;
  30.                 } else if (hour > 12) {
  31.                     // invalid
  32.                     isValid = false;
  33.                 }
  34.             } else if (matches[7].toUpperCase() == 'AM') {
  35.                 if (hour > 12) {
  36.                     // invalid
  37.                     isValid = false;
  38.                 } else if (hour == 12) {
  39.                     hour = 0;
  40.                 }
  41.             }
  42.             if (isValid == true) {
  43.                 var date = new Date(year, month, day, hour, minute, second);
  44.                 if (date.getFullYear() !== year
  45.                     || date.getMonth() != month
  46.                     || date.getDate() !== day
  47.                     || date.getHours() !== hour
  48.                     || date.getMinutes() !== minute
  49.                     || date.getSeconds() !== second
  50.                 ) {
  51.                     // invalid
  52.                     isValid = false;
  53.                 } else {
  54.                     // valid
  55.                     isValid = true;
  56.                 }
  57.             }
  58.         }
  59.     } else {
  60.         // valid
  61.         isValid = true;
  62.     }
  63.  
  64.     return isValid;
  65. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement