我在这里有一些代码:
输出一个睡眠时间列表,为您提供90分钟的睡眠时间倍数(此列表将显示晚上8点后的任何时间的睡眠时间)
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。
为什么我的 在输出中有条件地过滤掉19:30?
答案 0 :(得分:3)
为什么我的输入中的条件过滤时间不是19:30?
您使用的是while循环,就像for循环一样,但是您的afterthought在实际代码之前只运行。您在检查后将条件的值更改为假的。
您应该将减去90分钟的时间移动到while块的末尾。
while(timeNow > sleepTime) {
document.write(timeNow + "<br />");
timeNow.setMinutes(timeNow.getMinutes() - 90);
}