JSFiddle - React, Tailwind, and code Playground
HTML
<ul id="results"></ul>
JavaScript
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"));