0

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

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

这是以下代码的结果:

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);
}

任何帮助,将不胜感激!

4

1 回答 1

1

您可以只重建字符串而不是使用替换。因为您在示例中使用了替换,所以您只是将 7 替换为 19。如果您有像 12:12:12 这样的时间,使用替换也会导致问题。

前任。

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);
}
于 2016-11-15T18:45:41.320 回答