时间递增计数器

Time upward counter

我对编程还很陌生,我正在学习的教程 类 给了我一个任务来创建一个 javascript 脚本来显示一天中的所有秒数。

我自己用一些基本代码完成了作业:

function Time() {
  var hours = 12;
  var minutes = 0;
  var seconds = 0;
  var amorpm = 1;
  var counter = 0;
  var endtime = 86400;
  while (counter < endtime) {
    if (amorpm <= 12) {
      document.writeln(fixTime(hours) + ":" + fixTime(minutes) + ":" + fixTime(seconds) + "AM");
    } else if (amorpm > 12) {
      document.writeln(fixTime(hours) + ":" + fixTime(minutes) + ":" + fixTime(seconds) + "PM");
    } else {
      break;
    }

    if (seconds < 59) {
      seconds++;
    } else {
      if (minutes < 59) {
        minutes++;
      } else {
        ampm++;
        if (hours < 12) {
          hours++;
        } else {
          hours = 1;
        }
        minutes = 0;
      }
      seconds = 0;
    }
    counter = counter + 1;
  }
}

function fixTime(i) {
  if (i < 10) {
    i = "0" + i
  };
  return i;
}

并且输出完全正确。

但是,其中一个标准是使用 "nested loops",对于我来说,我有点难以弄清楚如何使用嵌套循环来做同样的事情。

我想我可以使用带有 i++-s 的 for 循环来计算秒数和分钟数,或者几个 while 循环,但所有这些对我来说似乎有点像不必要的包袱。

非常感谢任何帮助!

您可以创建 for loop 小时 分钟 并嵌套它们。

您可以在 上午/下午 占用 mod 12 小时。

for (let h = 0; h < 24; h++) {
  for (let m = 0; m < 60; m++) {
    for (let s = 0; s < 60; s++) {
      // 24 hour
      document.write(`<div>${h.toString().padStart(2, "0")}:${m.toString().padStart(2, "0")}:${s.toString().padStart(2, "0")}</div>`);
      // 12 hour am/pm
      //document.write(`<div>${(h % 12).toString().padStart(2, "0")}:${m.toString().padStart(2, "0")}:${s.toString().padStart(2, "0")} ${h < 12 ? "AM" : "PM"}</div>`);
    }
  }
}

12 小时制,带上午和下午。您可以创建 4 个 for 循环。 3 表示小时、分钟和秒,1 表示从 AM 切换到 PM 并嵌套它们。

for (var min = 0; min <= 59; min++) { //Loop for Min Count
  for (var sec = 0; sec <= 59; sec++) { //Loop for seconds count
    console.log("12" + ":" + (min < 10 ? "0" + min : min) + ":" + (sec < 10 ? "0" + sec : sec) + " AM");

  }
}
for (var i = 0; i < 2; i++) { //loop to switch from AM to PM
  for (var hour = 1; hour <= 12 - i; hour++) { //Loop for Hour Count
    for (var min = 0; min <= 59; min++) { //Loop for Min Count
      for (var sec = 0; sec <= 59; sec++) { //Loop for seconds count
        if (i == 0 && hour != 12) {
          console.log((hour < 10 ? "0" + hour : hour) + ":" + (min < 10 ? "0" + min : min) + ":" + (sec < 10 ? "0" + sec : sec) + " AM");
        } else {
          console.log((hour < 10 ? "0" + hour : hour) + ":" + (min < 10 ? "0" + min : min) + ":" + (sec < 10 ? "0" + sec : sec) + " PM");
        }
      }
    }
  }
}