AM/PM
Convert a date string with AM/PM format to a JavaScript Date object
by Patrick Hund
JavaScript
var input = [
{
str: "Sun Apr 25, 2010 3:30am"
},
{
str: "Sun Apr 25, 2010 3:30pm"
},
{
str: "Sun Apr 25, 2010 12:00am"
},
{
str: "Sun Apr 25, 2010 12:00pm"
},
{
str: "04/22/2014 11:40 PM"
},
{
str: "04/22/2014 11:40 PM",
gmt: -5
}
];
for (var i = 0; i < input.length; i++) {
console.log(input[i].str + (typeof input[i].gmt === "undefined" ? "" : " " + input[i].gmt) + " => " + convert(input[i].str, input[i].gmt).toString());
}
function convert(str, gmt) {
var timestamp, date,
gmtStr = typeof gmt === "undefined" ? "" : "GMT" + (gmt >= 0 ? "+" : "") + gmt;
timestamp = Date.parse(str.replace(/[ap]m$/i, '') + gmtStr);
date = new Date(timestamp);
if (str.match(/am$/i) && date.getHours() === 12) {
timestamp -= 12 * 60 * 60 * 1000;
}
if (str.match(/pm$/i) && date.getHours() !== 12) {
timestamp += 12 * 60 * 60 * 1000;
}
return new Date(timestamp);
}