首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >比较开始时间和结束时间与jquery?

问比较开始时间和结束时间与jquery?
EN

Stack Overflow用户
提问于 2012-06-28 20:44:00
回答 5查看 43.7K关注 0票数 6

下面是代码

代码语言:javascript
复制
$(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');
            }
    });
});

如果我有如下时间范围

代码语言:javascript
复制
Start Time Range (listbox) =   12:00 AM To 11:59PM

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

那么如何验证开始时间小于结束时间或结束时间大于开始时间

代码语言:javascript
复制
Start-time < End-time  OR  End-time > St-time

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

代码语言:javascript
复制
Format: '9:00 AM'
Format: '5:00 PM'
EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2013-01-15 21:31:32

这是我在调查之后得到的。

如果时间格式为 in 12 Hour-Time或24 Hour-Time,则最佳做法。

代码语言:javascript
复制
//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;
}
票数 25
EN

Stack Overflow用户

发布于 2012-06-28 20:49:28

您必须将字符串转换为可以在时间上进行比较的值。Date.parse会派上用场,不过您也需要传递日期。因为你只关心时间,所以对两个都使用相同的假日期。

代码语言:javascript
复制
if(Date.parse("1-1-2000 " + st) > Date.parse("1-1-2000 " + et)) {
票数 4
EN

Stack Overflow用户

发布于 2015-01-23 16:35:47

您甚至可以尝试以下jquery规则:jQuery.validator.addMethod

代码语言:javascript
复制
   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.');

您可以调用规则:

代码语言:javascript
复制
$("#txtToTime").rules('add', { timeValidator: "#txtFromTime" });
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11244943

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档