Parse Convert Time Stamp
For Ajax lovers everywhere. From Twitter, or anywhere
by efwjames
JavaScript
// UTC time
var str = "Sun, 17 Feb 2013 23:53:34 +0000";
function parseTime(timestr) {
var dateoffset = 0;
//convert time
var time = parseFloat((timestr.substr(-14, 10)).replace(/:/gi, ""));
var localoffset = (new Date().getTimezoneOffset() / 60) * 10000;
var newtime = time - localoffset;
var ampm = "am";
if (newtime <= 0) {
newtime = newtime + 120000;
ampm = "pm";
dateoffset = 1;
};
if (newtime >= 120000) {
newtime = newtime - 120000;
ampm = "pm";
};
newtime = Math.abs(newtime).toString();
if (newtime.length <= 5) {
newtime = newtime.charAt(0) + newtime.charAt(-4) + ":" + newtime.substr(-4, 2) + ":" + newtime.substr(-2, 2);
} else {
newtime = newtime.substr(-6, 2) + ":" + newtime.substr(-4, 2) + ":" + newtime.substr(-2, 2);
}
//convert date
var day = timestr.substr(0, 3);
var numeral = timestr.substr(5, 2);
var month = timestr.substr(8, 3);
var year = timestr.substr(12, 4);
var week = ["Sun", "Mon", "Tues", "Wed", "Thurs", "Fri", "Sat"];
var months = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "July", "Aug", "Sept", "Oct", "Nov", "Dec"];
if (dateoffset == 1) {
for (var i in week) {
if (week[i] == day) {
var target = i - 1;
target = (i == 0) ? 6 : target;
day = week[target];
};
}
numeral = numeral - 1;
if (numeral == 1) { // first day previous
for (var i in months) {
if (months[i] == months) {
var target = i - 1;
target = (i == 0) ? 11 : target;
month = months[target];
};
}
numeral = daysInMonth(month, year);
};
};
function daysInMonth(month, year) {
return new Date(year, month, 0).getDate();
}
return day + ' ' + month + ' ' + numeral + ' ' + year + ' ' + newtime + ' ' + ampm;
}
var what = parseTime(str);
document.write(what);