从24小时开始时间转换中删除零

时间:2016-11-15 18:37:41

标签: javascript parseint datetime-conversion

这是针对从12小时格式到军事/ 24小时时间的时间转换问题 标准输入:07:05:45PM
预期输出:19:05:45
标准/实际输出:019:05:45
问题出在输出开头的零 ^

我尝试为小数系统设置基数为10的parseInt(),但这没有任何效果。

这是以下代码的结果:

function main() {
  var time = readLine();

  var hours = parseInt(time.substr(0, 2), 10);
  var minutes = parseInt(time.substr(3,5));
  var seconds = parseInt(time.substr(6,8));

  if ( time.indexOf('AM') !== -1 && hours === 12) {
    time = time.replace('12', '00');
  }
  if (time.indexOf('PM') !== -1 && hours < 12) {
    time = time.replace(hours, (hours + 12));
  }

  time = time.replace(/(AM|PM)/g, '');
  console.log(time);
}

任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:1)

您可以重建字符串而不是使用replace。因为你在你的例子中使用了替换,你只需要用19代替7.如果有时间像12:12:12那样,使用replace也会引起问题。

离。

function main() {
  var time = readLine();

  var hours = parseInt(time.substr(0, 2), 10);
  var minutes = time.substr(3,5);
  var seconds = time.substr(6,8);

  if ( time.indexOf('AM') !== -1 && hours === 12) {
    hours = 0;
  }
  else if (time.indexOf('PM') !== -1 && hours < 12) {
    hours += 12;
  }

  time = (hours < 10 ? "0" + hours : hours) + ':' + minutes + ':' + seconds;
  console.log(time);
}