Быстрое решение, которое работает над входом, который Вы определили:
function parseTime( t ) {
var d = new Date();
var time = t.match( /(\d+)(?::(\d\d))?\s*(p?)/ );
d.setHours( parseInt( time[1]) + (time[3] ? 12 : 0) );
d.setMinutes( parseInt( time[2]) || 0 );
return d;
}
var tests = [
'1:00 pm','1:00 p.m.','1:00 p','1:00pm','1:00p.m.','1:00p','1 pm',
'1 p.m.','1 p','1pm','1p.m.', '1p', '13:00','13', '1a', '12', '12a', '12p', '12am', '12pm', '2400am', '2400pm', '2400',
'1000', '100', '123', '2459', '2359', '2359am', '1100', '123p',
'1234', '1', '9', '99', '999', '9999', '99999', '0000', '0011', '-1', 'mioaw' ];
for ( var i = 0; i < tests.length; i++ ) {
console.log( tests[i].padStart( 9, ' ' ) + " = " + parseTime(tests[i]) );
}
Это должно работать на несколько других вариантов также (даже если утра будет использоваться, это будет все еще работать - например). Очевидно, это довольно сыро, но это также довольно легко (намного более дешевый для использования этого, чем полная библиотека, например).
Предупреждение: самка кода не работает с 12:00, и т.д.
Вы можете попробовать приложение с открытым исходным кодом Macdown , который я написал (или, альтернативно, Markdownlive Ренча),
I've used peg-markdown, it's much faster than the original perl and can handle a few syntax extensions if you enable them.