Java脚本时间与给定时间比较

时间:2015-12-11 07:22:04

标签: javascript time

好的,我无法理解这一点,我看了很多关于SF的帖子但是无法弄明白。
我需要在艰难的时间内占用服务器时间。

我试过这个

            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;
                }           
            } 

我知道这不能比较,因为时间是文本格式。有些人请求我补充这一点。

3 个答案:

答案 0 :(得分:2)

您可以编写一个仅以分钟(mm)为单位转换时间(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
}

答案 1 :(得分: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 :(得分: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;
            }
        }