2015-12-11 2 views
0

Хорошо, я не могу обойти это, ив посмотрел на столько сообщений на SF, но не мог понять это.
Мне нужно время серверного времени в лагере с жестким временем.Время в сценарии Java сравнивается с заданным временем

я есть попробовать это

  var breackfastCutOffTime = "5:30"; 
      var lunchCutOffTime   = "10:00"; 
      var dinnerCutOffTime  = "17:00"; 


      var serverTime = currentDate.getHours()+ ":" + currentDate.getMinutes();    

      if(Date.parse(toDay) == Date.parse(selectedDate)){ 
       if(serverTime >= breackfastCutOffTime){ 
        document.getElementById("breakfast").disabled = true; 
       }else if(serverTime >= lunchCutOffTime){ 
        document.getElementById("lunch").disabled = true; 
       }else if(serverTime >= dinnerCutOffTime){ 
        document.getElementById("dinner").disabled = true; 
       }   
      } 

Я знаю, что не могу сравнивать, потому что время в текстовом format.Some один Pleace помочь мне compleate это.

+0

Сделайте свой cutofftimes строкой даты, а не var breackfastCutOffTime = new Date(); breackfastCutOffTime.setHours (ParseInt ('05', 10), ParseInt ('30', 10), ParseInt ('00', 10), 0); то сравнение будет работать. – Sp0T

ответ

1

См Date Api для получения дополнительной информации.

Ниже приведен ваш модифицированный код. Я прокомментировал несколько строк. Изменение в соответствии с вашей логикой

Fiddler link

//var breackfastCutOffTime = "5:30"; 
var breackfastCutOffTime = new Date(); 
breackfastCutOffTime.setHours(5); 
breackfastCutOffTime.setMinutes(30); 

//var lunchCutOffTime   = "10:00"; 
var lunchCutOffTime = new Date(); 
lunchCutOffTime.setHours(10); 
lunchCutOffTime.setMinutes(00); 

//var dinnerCutOffTime = "17:00"; 
var dinnerCutOffTime = new Date(); 
dinnerCutOffTime.setHours(17); 
dinnerCutOffTime.setMinutes(00) 

var serverTime = new Date(); 

//var serverTime = currentDate.getHours()+ ":" + currentDate.getMinutes();    

//if(Date.parse(toDay) == Date.parse(selectedDate)){ 
    if(serverTime >= breackfastCutOffTime){ 
    console.log("breackfastCutOffTime"); 
    //document.getElementById("breakfast").disabled = true; 
    }else if(serverTime >= lunchCutOffTime){ 
    //document.getElementById("lunch").disabled = true; 
    console.log("lunchCutOffTime"); 
    }else if(serverTime >= dinnerCutOffTime){ 
    //document.getElementById("dinner").disabled = true; 
    console.log("dinnerCutOffTime"); 
    }   
//} 

Объяснение:

Вместо преобразования формата даты в строку я создаю новый экземпляр даты для каждого времени отсечки и установки желаемого времени этот объект.

Окончательно сравните даты объекта напрямую.

Примечание: Объекты Date установлены в соответствии с вашим часовым поясом.

2

Вы можете написать функцию, которая преобразует Time (hh: mm) только в минутах (мм). Затем вы можете сравнить два раза и выполнять свои действия соответственно.

псевдокод:

function convert(string time) int { 
    //split the time by ':' 
    //convert the string hh,mm to int hour,mm 
    //calculate total minutes 
    //return total minutes 
} 
0

Вы можете передать breackfastCutOffTime, lunchCutOffTime и dinnerCutOffTime в нижеследующую функцию, и он вернет true, если они равны или больше текущего времени.

function compareTime(timeToCompare) { 
      var currentDate = new Date(); 
      var tempDate = new Date(); 
      var timeToCompareArray = timeToCompare.split(":"); 
      tempDate.setHours(timeToCompareArray[0]); 
      tempDate.setMinutes(timeToCompareArray[1]); 
      if (tempDate >= currentDate) { 
       return true; 
      } else { 
       return false; 
      } 
     } 
Смежные вопросы