Time Parsing and formatting
Time Parsing and formatting
by Terrance Smith
HTML
<form>
<h3>Test Driver</h3>
<input type="button" id="tester" value="Run Unit Tests" onclick="start_tests();">
<h3>Format Selector</h3>
<select id="formatval" >
<option value="hh am|pm">hh am|pm</option>
<option value="hh:mm am|pm">hh:mm am|pm</option>
<option value="hh:mm:ss am|pm">hh:mm:ss am|pm</option>
</select>
<h3>Input text</h3>
<input type="text" value="12:51 am" id="in"/>
<h3>Formatted output text</h3>
<input type="text" value="_" id="out"/>
<input type="button" onclick="parseEntry();" value=" format " id="formatter"/>
</form>
JavaScript
function parseTime(timeString) {
if (timeString === '') {
return null;
}
var d = new Date();
var time = timeString.match(/(\d+)(:(\d\d))?\s*(p?)/i);
d.setHours(parseInt(time[1], 10) + ((parseInt(time[1], 10) < 12 && time[4]) ? 12 : 0));
d.setMinutes(parseInt(time[3], 10) || 0);
d.setSeconds(0, 0);
return d;
}
function isDateObject(val) {
return (val.getMonth);
}
function getClockTimeString(inputDate) {
if (!isDateObject(inputDate)) {
throw "Argument is not typeof Date";
}
var hour = inputDate.getHours();
var minute = inputDate.getMinutes();
var second = inputDate.getSeconds();
var ap = "AM";
if (hour > 11) {
ap = "PM";
}
if (hour > 12) {
hour = hour - 12;
}
if (hour === 0) {
hour = 12;
}
if (hour < 10) {
hour = "0" + hour;
}
if (minute < 10) {
minute = "0" + minute;
}
if (second < 10) {
second = "0" + second;
}
var timeString = hour + ':' + minute + ':' + second + " " + ap;
if (arguments[1]) {
var formatter = arguments[1].toString();
if (formatter && timeString) {
switch (formatter) {
case "hh am|pm":
timeString = hour + " " + ap;
break;
case "hh:mm am|pm":
timeString = hour + ":" + minute + " " + ap;
break;
case "hh:mm:ss am|pm":
timeString = hour + ":" + minute + ":" + second + " " + ap;
break;
}
}
}
return timeString;
}
function PadTime(input) {
//optional boolean arg show seconds
var Hour = "(1[012]|0?[1-9]){1}";
var MinutesOrSecondsBeforeAmOrPm = "(([0-5][0-9]|[1-5][0-9]?:){1})(?=\\s*(am|pm|AM|PM){1})";
var Minute = "([0-5][0-9]|[1-5][0-9]){1}";
var Second = "([0-5][0-9]|[1-5][0-9]){1}";
var AmOrPm = "(am|pm|AM|PM){1}";
var Start = "^";
var Space = "\\s";
...