Обычная функция JavaScript может выглядеть следующим образом, обрабатывая только текст:
function f(s) {
var m = s.match(/^(\d\d)(\d\d)$/)
if (!m) { return null }
var hour = Number(m[1])
if (hour < 12) {
return `${hour}:${m[2]} AM`
}
return `${hour-12}:${m[2]} PM`
}
f('0800') // => "8:00 AM"
f('1630') // => "4:30 PM"
f('foo') // => null
Поскольку вы используете AngularJS, вы можете обернуть существующий фильтр date
и использовать его форматер следующим образом:
myAngularModule
.filter('t24', function($filter) {
return function(input) {
var m;
if (m = input.match(/^(\d\d)(\d\d)$/)) {
var now = new Date()
now.setHours(m[1])
now.setMinutes(m[2])
return $filter('date')(now, 'hh:mm a')
}
return 'invalid time'
}
})
...
<div>
You chose {{ theUserTime | t24 }}
</div>