Javascript 将开始时间和结束时间与jquery进行比较?

Javascript 将开始时间和结束时间与jquery进行比较?,javascript,jquery,validation,date,time,Javascript,Jquery,Validation,Date,Time,这是密码 $(document).ready(function() { $('#st').change(function(){ var st = $('#st').val(); // start time Format: '9:00 PM' var et = $('#et').val(); // end time Format: '11:00 AM' //how do i compare time if(st

这是密码

$(document).ready(function() {
    $('#st').change(function(){
        var st = $('#st').val(); // start time Format: '9:00 PM'
        var et = $('#et').val(); // end time   Format: '11:00 AM' 

        //how do i compare time
            if(st > et)
            {
               alert('end time always greater then start time');
            }
    });
});
如果我有如下的时间范围

Start Time Range (listbox) =   12:00 AM To 11:59PM

End Time Range  (listbox)  =   12:00 AM To 11:59PM
那么,如何验证开始时间小于结束时间或结束时间大于开始时间

Start-time < End-time  OR  End-time > St-time

您必须将字符串转换为可以根据时间进行比较的值<代码>日期。解析很方便,不过你也需要传递一个日期。因为你只在乎时间,所以对两者都使用相同的假日期

if(Date.parse("1-1-2000 " + st) > Date.parse("1-1-2000 " + et)) {

将它们转换为日期对象:

然后使用常用的比较器:


如果它们是select元素且select元素的顺序相同,请比较SELECTED索引。不需要解析日期。

在调查之后,我得到了这个。
如果时间格式为12小时时间或24小时时间,则为最佳做法

//start time
var start_time = $("#start_time").val();

//end time
var end_time = $("#end_time").val();

//convert both time into timestamp
var stt = new Date("November 13, 2013 " + start_time);
stt = stt.getTime();

var endt = new Date("November 13, 2013 " + end_time);
endt = endt.getTime();

//by this you can see time stamp value in console via firebug
console.log("Time1: "+ stt + " Time2: " + endt);

if(stt > endt) {
    $("#start_time").after('<span class="error"><br>Start-time must be smaller then End-time.</span>');
    $("#end_time").after('<span class="error"><br>End-time must be bigger then Start-time.</span>');
        return false;
}
//开始时间
var start_time=$(“#start_time”).val();
//结束时间
var end_time=$(“#end_time”).val();
//将两个时间转换为时间戳
var stt=新日期(“2013年11月13日”+开始时间);
stt=stt.getTime();
var endt=新日期(“2013年11月13日”+结束时间);
endt=endt.getTime();
//通过这个,您可以通过firebug在控制台中看到时间戳值
日志(“时间1:+stt+”时间2:+endt);
如果(stt>endt){
$(“#开始时间”)。之后(“
开始时间必须小于结束时间”); $(“#结束时间”)。之后(“
结束时间必须大于开始时间”); 返回false; }
您甚至可以尝试以下jquery规则:jquery.validator.addMethod

   jQuery.validator.addMethod("timeValidator",
   function (value, element, params) {
   var val = new Date('1/1/1991' + ' ' + value);       
   var par = new Date('1/1/1991' + ' ' + $(params).val());
   if (!/Invalid|NaN/.test(new Date(val))) {
           return new Date(val) > new Date(par);
       }

       return isNaN(val) && isNaN(par)
           || (Number(val) > Number(par));
}, 'End Time must be greater than Start Time.');
您可以调用规则:

$("#txtToTime").rules('add', { timeValidator: "#txtFromTime" });

在<代码>凌晨3:00到下午2:30时失败,因为Z 300大于230@Frank请考虑在帮助你的答案旁边切换嘀嗒声,但是它在这些条件下失败了:<代码>(1)如果开始时间1:00和结束时间12:00 AM/12:30AM < /代码>其他条件<代码> [ 2 ]如果StartTime 1:00 AM和EndTime 12:00 PM/12:30 PM使用firebug,则在jquery中对其进行控制台操作,并检查控制台输出:
console.log(Date.parse(“1-1-2000”+st)+“+Date.parse(“1-1-2000”+et))
在第二种情况下,EndTime(et)对象在控制台中返回
null
。还有一种情况失败:
[3]如果StartTime 11:00 PM和EndTime 12:00 PM/12:30 PM
11PM(夜间)和12PM/12:30 PM(中午),为什么要使用“2013年11月13日”?例如,您可以使用任何日期和月份。
$("#txtToTime").rules('add', { timeValidator: "#txtFromTime" });