0

これは、12 時間形式から軍用/24 時間形式への時間変換に関する問題です。
標準入力:07:05:45PM
期待される出力:19:05:45
標準/実際の出力:問題は、出力の先頭に 019:05:45
あるゼロ^にあります。

10 進数の基数を 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);
}

どんな助けでも大歓迎です!

4

1 に答える 1

1

置換を使用する代わりに、文字列を再構築することができます。この例では replace を使用しているため、7 を 19 に置き換えているだけです。replace を使用すると、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 に答える