Skip to content

Instantly share code, notes, and snippets.

@veggiemonk
Created December 16, 2015 12:36
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save veggiemonk/e5f939efd60a13d1751d to your computer and use it in GitHub Desktop.
Save veggiemonk/e5f939efd60a13d1751d to your computer and use it in GitHub Desktop.
date input manipulation
/**
*
* @param date {string}
* @returns {string || null}
*/
function validateDate (date) {
var dateError = false;
//console.log("VALIDATE DATE = "+ date)
if (date) {
var sDate = date.split(/[.,\/ -]/);
var sDay = sDate[0];
var sMonth = sDate[1];
var sYear = sDate[2];
if (sDay) {
if (isNaN(sDay)) dateError = true;
}
if (sMonth) {
if (isNaN(sMonth)) dateError = true;
} else {
sMonth = new Date().getMonth() + 1;
}
if (sYear) {
if (isNaN(sYear)) { dateError = true;
} else {
if (sYear < 100) {
if (sYear < 50) { sYear = 2000 + parseInt(sYear);
} else { sYear = 1900 + parseInt(sYear);
}
}
}
} else {
sYear = new Date().getFullYear(); // fix bug : if month = 0 and year = 0 -> month <> january
}
//console.log({year: sYear, month: sMonth - 1, day: sDay});
if (!dateError && (!moment({year: sYear, month: sMonth - 1, day: sDay}).isValid()) ) dateError = true;
} else { //Invalide Date
dateError = true;
}
return !dateError ? moment({year: sYear, month: sMonth - 1, day: sDay}).format("DD/MM/YYYY").toString() : null;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment