2016-07-26 34 views
2

我有一些代码在这里说:比较Date对象显示意外的结果

  • 让我们您输入起床时间,格式为“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

在'while'循环中翻转两行会给你想要的结果吗? (即)while(timeNow> sleepTime){document.write(timeNow +“
”); timeNow.setminutes(timeNow.getminutes() - 90);}' –

+0

脚本的完整输出是什么? –

+1

@Hans是的工作,现在明白了!谢谢 – artze

回答

3

为什么不是我的条件在输出中过滤出19:30?

您目前使用的同时,环就像一个for循环,但你的afterthought运行只是之前实际代码。您在检查后将条件的值更改为falsey。

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

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