Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Select an option

  • Save jonesiscoding/d1c9c12682a04b5106c5d471b6e6ca65 to your computer and use it in GitHub Desktop.

Select an option

Save jonesiscoding/d1c9c12682a04b5106c5d471b6e6ca65 to your computer and use it in GitHub Desktop.
Simple Parse Date In Javascript
function parseDate(str) {
var parts = str.split( /\s|,|-|\// );
var isNum = function(val) { return !isNaN( parseFloat( val ) ) && isFinite( val ); };
var isYear = function(val) { return 4 === val.length && isNum(val); };
var yIndex = null;
var mIndex = null;
var dIndex = null;
var rtDate = null;
if ( parts.length === 2 ) {
if ( isYear( parts[ 0 ] ) ) {
yIndex = 0;
mIndex = 1;
}
else if( isYear( parts[ 1 ] )) {
yIndex = 1;
mIndex = 0;
}
} else if(parts.length === 3) {
if ( isYear( parts[ 0 ] ) ) {
yIndex = 0;
mIndex = 1;
dIndex = 2;
} else if ( isYear( parts[ 2 ] ) ) {
yIndex = 2;
mIndex = 0;
dIndex = 1;
}
}
var map = { jan: 1, feb: 2, mar: 3, apr: 4, may: 5, jun: 6, jul: 7, aug: 8, sep: 9, oct: 10, nov: 11, dec: 12 };
var month = isNum(parts[mIndex]) ? parts[mIndex] : map[parts[mIndex].substr(0,3).toLowerCase()] || null;
var day = null !== dIndex ? parts[dIndex] || null : 1;
var year = null !== yIndex ? parts[yIndex] || null : null;
if ( month && day && year ) {
rtDate = new Date( year, month - 1, day, 0, 0, 0 );
}
return null !== rtDate && !isNaN(rtDate.getMonth()) ? rtDate : null;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment