как преобразовать время 0200, 0900, 1600 в AM и PM - PullRequest
0 голосов
/ 13 ноября 2018

у меня есть код ниже для времени, но .. когда пользователь мой пользователь вводит 0800 , 1600 ,0230, как в этот раз, как преобразовать это время в AM и в PM

function tConv24(time24) {
  var ts = time24;
  var H = +ts.substr(0, 2);
  var h = (H % 12) || 12;
  h = (h < 10)?("0"+h):h;  // leading 0 at the left for 1 digit hours
  var ampm = H < 12 ? " AM" : " PM";
  ts = h + ts.substr(2, 3) + ampm;
  return ts;
};

console.log(tConv24('0200'));
console.log(tConv24('0900'));
console.log(tConv24('1600'));

Ответы [ 2 ]

0 голосов
/ 13 ноября 2018

function tConv24(time24) {
  var ts = time24;
  console.log(ts);
  var H = +ts.substr(0, 2);
  var h = (H % 12) || 12;
  h = (h < 10)?("0"+h):h;  // leading 0 at the left for 1 digit hours
  var ampm = H < 12 ? " AM" : " PM";
  ts = h + ':' + ts.substr(2, 3) + ampm;
  return ts;
};

console.log(tConv24('0800'));
console.log(tConv24('1034'));
console.log(tConv24('0000'));
console.log(tConv24('1200'));
console.log(tConv24('2222'));
console.log(tConv24('2359'));
0 голосов
/ 13 ноября 2018

Обычная функция 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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...