レッスンに戻る

明日まで何秒?

重要度: 5

明日までの秒数を返すgetSecondsToTomorrow()関数を生成してください。

たとえば、現在時が23:00の場合

getSecondsToTomorrow() == 3600

追伸 関数はどの曜日でも機能する必要があります。「今日」はハードコーディングされません。

明日まであと何ミリ秒かを計算するには、現在の時刻から「明日の00:00:00」を引きます。

まず「明日」を生成し、その後実行します。

function getSecondsToTomorrow() {
  let now = new Date();

  // tomorrow date
  let tomorrow = new Date(now.getFullYear(), now.getMonth(), now.getDate()+1);

  let diff = tomorrow - now; // difference in ms
  return Math.round(diff / 1000); // convert to seconds
}

代替ソリューション

function getSecondsToTomorrow() {
  let now = new Date();
  let hour = now.getHours();
  let minutes = now.getMinutes();
  let seconds = now.getSeconds();
  let totalSecondsToday = (hour * 60 + minutes) * 60 + seconds;
  let totalSecondsInADay = 86400;

  return totalSecondsInADay - totalSecondsToday;
}

多くの国では夏時間が存在することに注意してください。そのため、23時間または25時間の曜日が発生することがあります。このような曜日を個別に処理したい場合があります。