2016-07-14 110 views
3

进入我有我在课堂时间跨度数据库收到两次如何比较时间跨度与时间跨度从数据库

begTime = current.data('bgtime'); 
        endTime = current.data('endtime'); 

我比较他们的用户

$('#timeToStart').on('change', function() { 
      var startTime = $('#timeToStart').val(); 
      sTimeHire = startTime; 


     }); 
     $('#timeToEnd').on('change', function() { 
      var endTime = $('#timeToEnd').val(); 
      eTimeHire = endTime; 
     }); 


if (begTime > sTimeHire || endTime < eTimeHire) { 
         alert("yayy it works"); 

        } 

进入对于某些两次因为如果sTimeHire和begTime都是晚上7点,它会进入if语句,即使它只应在begTime更大时才会进入?

但是,如果我单独试验endTime,它会起作用,如果endTime和eTimeHire都是晚上9:00,它就不会进入if语句。

我注意到begTime不附加任何秒的时候我做
alert(begTime)

是有可能,它被认为比sTimeHire的07:00:00因为如此吗?

+0

将您的时间转换为unix时间戳,然后您将比较整数。从那里你可以转换回你想要的任何格式。 – DigitalDesignDj

+0

你从'current.data('bgTime')'得到了什么字符串,以及用户能够进入'timeToStart'的值是什么?因为'TimeSpan'是一个.NET结构,它只是表示一段时间(即5小时30分32秒),而不是特定的时间(即5:30:32 am)。 –

回答

0

您正在使用JavaScript和比较时间。使用Date对象来提供帮助。

var begTime = new Date(current.data('bgtime')).getTime(), 
    endTime = new Date(current.data('endtime')).getTime(); 

$('#timeToStart').on('change', function() { 
    var startTime = new Date($('#timeToStart').val()).getTime(); 
    sTimeHire = startTime; 
}); 

$('#timeToEnd').on('change', function() { 
    var endTime = new Date($('#timeToEnd').val()).getTime(); 
    eTimeHire = endTime; 
}); 


if (begTime > sTimeHire || endTime < eTimeHire) { 
    alert("yayy it works"); 
} 

未经测试,但这应该有助于您理解。

回复:我的意见,这不是严格意义上的UNIX时间戳,因为它在ms,而不是s,但因为它是到处都一样,同样的想法适用,整数时间

编辑:建议从.now()切换到.getTime()。

+1

我可以问你为什么使用'now()'?这被定义为Date对象的静态成员,而不是实例方法。通常可以在Date对象上使用'valueOf()'或'getTime()'来获得自纪元以来的毫秒数。 –

+0

感谢您的回答!我得到这个错误:Uncaught TypeError :(中间值).now不是一个函数 –