2016-07-26 2 views
2

У меня есть некоторый код здесь:Сравнение Даты Объектов Показаны Неожиданные результаты

  • давайте вы вход пробуждения времени в формате «ЧЧ: мм»
  • Выводит список времени сна, что дает вам 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

@ Да, да, это сработало, поймите это сейчас! Спасибо – artze

ответ

3

Почему мой выходной сигнал не был обусловлен в 19:30?

Вы используете свой While-цикл, как для цикла, но ваш afterthought работает только перед вашим фактическим кодом. Вы меняете значение своего условного на что-то ложное после того, как вы его проверили.

Вы должны переместить вычитание 90 минут до конца блока while.

while(timeNow > sleepTime) { 
    document.write(timeNow + "<br />"); 
    timeNow.setMinutes(timeNow.getMinutes() - 90); 
} 
Смежные вопросы