timeparse.js
106 lines
| 2.9 KiB
| application/javascript
|
JavascriptLexer
r338 | (function() { | |||
'use strict'; | ||||
var timeParsePatterns = [ | ||||
// 9 | ||||
{ | ||||
re: /^\d{1,2}$/i, | ||||
handler: function(bits) { | ||||
if (bits[0].length === 1) { | ||||
return '0' + bits[0] + ':00'; | ||||
} else { | ||||
return bits[0] + ':00'; | ||||
} | ||||
} | ||||
}, | ||||
// 13:00 | ||||
{ | ||||
re: /^\d{2}[:.]\d{2}$/i, | ||||
handler: function(bits) { | ||||
return bits[0].replace('.', ':'); | ||||
} | ||||
}, | ||||
// 9:00 | ||||
{ | ||||
re: /^\d[:.]\d{2}$/i, | ||||
handler: function(bits) { | ||||
return '0' + bits[0].replace('.', ':'); | ||||
} | ||||
}, | ||||
// 3 am / 3 a.m. / 3am | ||||
{ | ||||
re: /^(\d+)\s*([ap])(?:.?m.?)?$/i, | ||||
handler: function(bits) { | ||||
var hour = parseInt(bits[1]); | ||||
if (hour === 12) { | ||||
hour = 0; | ||||
} | ||||
if (bits[2].toLowerCase() === 'p') { | ||||
if (hour === 12) { | ||||
hour = 0; | ||||
} | ||||
return (hour + 12) + ':00'; | ||||
} else { | ||||
if (hour < 10) { | ||||
return '0' + hour + ':00'; | ||||
} else { | ||||
return hour + ':00'; | ||||
} | ||||
} | ||||
} | ||||
}, | ||||
// 3.30 am / 3:15 a.m. / 3.00am | ||||
{ | ||||
re: /^(\d+)[.:](\d{2})\s*([ap]).?m.?$/i, | ||||
handler: function(bits) { | ||||
var hour = parseInt(bits[1]); | ||||
var mins = parseInt(bits[2]); | ||||
if (mins < 10) { | ||||
mins = '0' + mins; | ||||
} | ||||
if (hour === 12) { | ||||
hour = 0; | ||||
} | ||||
if (bits[3].toLowerCase() === 'p') { | ||||
if (hour === 12) { | ||||
hour = 0; | ||||
} | ||||
return (hour + 12) + ':' + mins; | ||||
} else { | ||||
if (hour < 10) { | ||||
return '0' + hour + ':' + mins; | ||||
} else { | ||||
return hour + ':' + mins; | ||||
} | ||||
} | ||||
} | ||||
}, | ||||
// noon | ||||
{ | ||||
re: /^no/i, | ||||
handler: function(bits) { | ||||
return '12:00'; | ||||
} | ||||
}, | ||||
// midnight | ||||
{ | ||||
re: /^mid/i, | ||||
handler: function(bits) { | ||||
return '00:00'; | ||||
} | ||||
} | ||||
]; | ||||
function parseTimeString(s) { | ||||
for (var i = 0; i < timeParsePatterns.length; i++) { | ||||
var re = timeParsePatterns[i].re; | ||||
var handler = timeParsePatterns[i].handler; | ||||
var bits = re.exec(s); | ||||
if (bits) { | ||||
return handler(bits); | ||||
} | ||||
} | ||||
return s; | ||||
} | ||||
window.parseTimeString = parseTimeString; | ||||
})(); | ||||