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

Compare start time amd end time with jquery?

本文关键字:时间 jquery 比较 结束 开始 开始时      更新时间:2023-09-26

这里是代码

$(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

考虑JS代码中的时间格式,由于时间格式无法实现差分逻辑

Format: '9:00 AM'
Format: '5:00 PM'

在调查这个之后,我得到了这里。
如果时间格式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;
}

您必须将字符串转换为可以在时间方面进行比较的值。 Date.parse派上用场,尽管您还需要传递日期。由于您只关心时间,因此请对两者使用相同的假日期。

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

你甚至可以尝试以下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" });

如果它们是选择元素,并且选择元素中的顺序相同,请比较 selectedIndex。无需解析日期。

将它们转换为 Date 对象:

https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Date

然后使用常用的比较器:

使用 JavaScript 比较两个日期