比较显示意外结果的日期对象

时间:2016-07-26 17:32:53

标签: javascript

我在这里有一些代码:

  • 我们以“hh:mm”
  • 的格式输入唤醒时间
  • 输出一个睡眠时间列表,为您提供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?

1 个答案:

答案 0 :(得分:3)

  

为什么我的输入中的条件过滤时间不是19:30?

您使用的是while循环,就像for循环一样,但是您的afterthought在实际代码之前只运行。您在检查后将条件的值更改为假的。

您应该将减去90分钟的时间移动到while块的末尾。

while(timeNow > sleepTime) { 
  document.write(timeNow + "<br />");
  timeNow.setMinutes(timeNow.getMinutes() - 90);
}