我需要比较几个时间范围之间的时间。其中一个范围是从夜间到早晨时间,例如2200-0459。如何在Java Script中执行此操作?目前我只是设法比较从早到晚,晚上到晚上的时间,例如0500-0759。
以下是代码:
function setRowBGColor()
{
var time = $("#DrugTime option:selected").text().replace(':', '');
$("#TimeSlot").find('tr').each(function (i) {
var $tds = $(this).find('td'),
timeslot = $tds.eq(0).text(),
timerange = $tds.eq(1).text().split('-');
if(time >= timerange[0] && time <= timerange[1])
{
alert('Row ' + (i + 1) + ':\nTime Slot: ' + timeslot + '\Time Range: ' + timerange[0] + '-' + timerange[1]);
}
});
}
答案 0 :(得分:1)
简单:如果范围的结束时间低于开始时间(即如果间隔跨越午夜时间就是这种情况) - 那么如果时间大于(等于)开始就足够了时间,或小于(等于)结束时间:
if (
time >= timerange[0] && time <= timerange[1]
||
timerange[1] < timerange[0] && (time >= timerange[0] || time <= timerange[1])
)
答案 1 :(得分:1)
@Johan
添加了一些曲折http://jsfiddle.net/aravindbaskaran/VWXrD/
function setRowBGColor() {
var rows = $("#TimeSlot").find('tr');
var lowestBound = parseInt($(rows[1]).find("td").eq(1).text().split('-')[0]);
var time = $("#DrugTime option:selected").text().replace(':', '');
time = parseInt(time, 10);
if(time < lowestBound){
time += 2400;
}
rows.each(function (i) {
var $tds = $(this).find('td'),
timeslot = $tds.eq(0).text(),
timerange = $tds.eq(1).text().split('-');
timerange[0] = parseInt(timerange[0],10);
timerange[1] = parseInt(timerange[1],10);
if(timerange[1] < timerange[0]){
timerange[1] += 2400;
}
if (!isNaN(timerange[0])&& time >= timerange[0] && time <= timerange[1]) {
alert('Row ' + (i - 1) + ':\nTime Slot: ' + timeslot + '\nTime Range: ' + timerange[0] + '-' + timerange[1]);
}
});
}
更新:改进了检查
答案 2 :(得分:1)
我认为范围6有一个拼写错误。我认为应该是1500-1859。
function setRowBGColor() {
var time = parseInt($("#DrugTime option:selected").text().replace(':', ''));
$("#TimeSlot").find('tr').each(function (i) {
var $tds = $(this).find('td'),
timeslot = $tds.eq(0).text(),
timerange = $tds.eq(1).text().split('-'),
lowerBound = parseInt(timerange[0]),
upperBound = parseInt(timerange[1]);
// Fix time for compare.
if (upperBound < lowerBound) {
upperBound += 2400;
if (!((time >= lowerBound) && (time <= upperBound)))
time += 2400;
}
if (time >= lowerBound && time <= upperBound) {
alert('Row ' + (i + 1) + ':\nTime Slot: ' + timeslot + '\nTime Range: ' + timerange[0] + '-' + timerange[1]);
}
});
}