我这里有一些代码:
- 让您以“hh:mm”格式输入起床时间
输出 sleep 时间列表,为您提供 90 分钟 sleep 周期的倍数(此列表将建议晚上 8 点之后的任何时间的 sleep 时间)
var inputTime = prompt("input wake up time"); var colonPosition = inputTime.indexOf(":") var inputHrs = parseInt(inputTime.substring(0, colonPosition)); var inputMin = parseInt(inputTime.substr(colonPosition + 1, 2)); var timeNow = new Date(); timeNow.setHours(inputHrs); timeNow.setMinutes(inputMin); timeNow.setDate(timeNow.getDate() + 1) var sleepTime = new Date(); sleepTime.setHours(20); while(timeNow > sleepTime) { timeNow.setMinutes(timeNow.getMinutes() - 90); document.write(timeNow + "<br />") }
如果我输入唤醒时间 9:00,则输出包括 19:30。
为什么我的 while 条件没有过滤掉输出中的 19:30?
最佳答案
Why isn't my while conditional filtering out 19:30 in the output?
您将 while 循环用作 for 循环,但您的 afterthought在您的实际代码之前运行。检查后,您将条件条件的值更改为错误的值。
您应该将减去 90 分钟的内容移至 while block 的末尾。
while(timeNow > sleepTime) {
document.write(timeNow + "<br />");
timeNow.setMinutes(timeNow.getMinutes() - 90);
}
关于javascript - 比较显示意外结果的日期对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38596416/