2016-07-26 40 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); 
}