Skip to content

Instantly share code, notes, and snippets.

@chensoren
Created July 2, 2013 00:36
Show Gist options
  • Save chensoren/5905919 to your computer and use it in GitHub Desktop.
Save chensoren/5905919 to your computer and use it in GitHub Desktop.
parse ISO 8601 date string to local time
function parseISO8601(str) {
// we assume str is a UTC date ending in 'Z'
var parts = str.split('T'),
dateParts = parts[0].split('-'),
timeParts = parts[1].split('Z'),
timeSubParts = timeParts[0].split(':'),
timeSecParts = timeSubParts[2].split('.'),
timeHours = Number(timeSubParts[0]),
_date = new Date;
_date.setUTCFullYear(Number(dateParts[0]));
_date.setUTCMonth(Number(dateParts[1])-1);
_date.setUTCDate(Number(dateParts[2]));
_date.setUTCHours(Number(timeHours));
_date.setUTCMinutes(Number(timeSubParts[1]));
_date.setUTCSeconds(Number(timeSecParts[0]));
if (timeSecParts[1]) _date.setUTCMilliseconds(Number(timeSecParts[1]));
return _date;
}
var d = new Date(parseISO8601("2012-12-31T10:00:00.0Z"));
console.log(d);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment