function parseTime(timeStr, dt) { if (!dt) { dt = new Date(); } var time = timeStr.match(/(\d+)(?::(\d\d))?\s*(p?)/i); if (!time) { return NaN; } var hours = parseInt(time[1], 10); if (hours == 12 && !time[3]) { hours = 0; } else { hours += (hours < 12 && time[3]) ? 12 : 0; } dt.setHours(hours); dt.setMinutes(parseInt(time[2], 10) || 0); dt.setSeconds(0, 0); return dt; } function addResult(dt) { $("#results").append("<li>" + dt + "</li>"); } // all of these should print out 1300 hours in your local time addResult(parseTime("1p")); addResult(parseTime("1:00pm")); addResult(parseTime("13:00")); // should print 0600 hours addResult(parseTime("6am")); addResult(parseTime("6:00"));
<ul id="results"></ul>