从 24 小时制转换开始时删除零

Removing Zero from Beginning of 24 Hour Time conversion

这是关于从 12 小时格式到 military/24-hour 时间的时间转换问题。
标准输入:07:05:45PM
预期输出:19:05:45
standard/actual 输出: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);
}

如有任何帮助,我们将不胜感激!

您可以只重建字符串而不是使用替换。因为您在您的示例中使用了 replace,所以您只是将 7 替换为 19。如果您遇到 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);
}