0

我想验证使用 12 小时格式的时间选择器选择的开始时间和结束时间。结束时间应大于开始时间。我使用了一个if语句,但是当测试使用诸如上午 8:00 作为开始时间和下午 1:00 作为结束时间的值时,它不起作用。我能做些什么来解决这个问题。有人请帮我解决这个问题。从昨天开始,我就一直坚持这一点。我只需要时间,我不需要日期

$("#dateTimeAddButton").click(function () 
{       
    var Date=$('#myDatePickerId').val()
    var startTime = $('#i').val();   
    var endTime   = $('#i1').val();    
    if (startTime > endTime) 
    {
        alert('End time always greater then start time.');
    }
});
4

2 回答 2

3

首先转换为最低面额(此处为分钟)。然后比较一下。

st = minFromMidnight(startTime);
et = minFromMidnight(endTime);
if(st>et){
    alert("End time must be greater than start time");
}

function minFromMidnight(tm){
 var ampm= tm.substr(-2)
 var clk = tm.substr(0, 5);
 var m  = parseInt(clk.match(/\d+$/)[0], 10);
 var h  = parseInt(clk.match(/^\d+/)[0], 10);
 h += (ampm.match(/pm/i))? 12: 0;
 return h*60+m;
}
于 2012-12-27T09:40:57.573 回答
0

请尝试以下代码,以防您的时间长度超过 6 个字符,例如上午 10:00 而不是上午 9:00 会在代码上方引发错误。

我对上面的代码做了一些小的改动,它对我来说就像魅力一样。

$('#btnSubmit').on('click', function () {
           
            var startTime = $('#txtJobStartTime').val();
            var endTime = $('#txtJobEndTime').val();
           
            var st = minFromMidnight(startTime);
            var et = minFromMidnight(endTime);
            if (st > et) {
                alert('End time always greater then start time.');
                return false;
            }

            function minFromMidnight(tm) {
                var ampm = tm.substr(-2);
                var clk;
                if (tm.length <= 6) {
                    clk = tm.substr(0, 4);
                } else {
                    clk = tm.substr(0, 5);
                }
                var m = parseInt(clk.match(/\d+$/)[0], 10);
                var h = parseInt(clk.match(/^\d+/)[0], 10);
                h += (ampm.match(/pm/i)) ? 12 : 0;
                return h * 60 + m;
            }
        });

于 2016-01-19T12:04:48.097 回答