如何在JavaScript中检查一个日期时间是否晚于另一个日期时间

33

通过表单我获取到了两个值,比如:

   Start datetime = '01/12/2013 12:00:00 AM' and
   End datetime = '02/12/2013 12:00:00 AM'.

如何在JavaScript中验证开始日期必须早于结束日期?


可能是重复的问题:使用JavaScript比较两个日期 - Heretic Monkey
8个回答

60
假设您已经在JavaScript中以Date格式接收了一个日期,您需要使用Date.parse()函数或比较运算符进行比较。它将返回自1970年1月1日00:00以来经过的毫秒数。
大致如下:
if(Date.parse(datetimeStart) < Date.parse(datetimeEnd)){
   //start is less than End
}else{
   //end is less than start
}

这里有一个Fiddle


1
这假设 Date.parse 能够正确处理给定的字符串。对于非美国日期、非 ISO 日期或用户提供的日期,Date.parse 可能无法识别日期分隔符或日期格式,因此会将 2/3/21 混淆为二月三日(美国格式)或二月二日(英国格式)。要么验证并转换为已知格式(即:转换为美国/ISO 格式),要么使用像 moment.js 这样的库来处理格式化/转换。 - andora

14

在JavaScript中,这真的很简单。

var startTime = new Date('01/12/2013 12:00:00 AM');
var endTime = new Date('02/12/2013 12:00:00 AM');

然后你需要做的就是比较

if( startTime < endTime){
   alert("start time is lesser");
}

更多相关信息,请点击此处


这假设 Date() 能够正确处理它所接收到的字符串。对于非美国日期、非 ISO 日期或用户提供的日期,Date() 可能无法识别日期分隔符或日期格式,因此会将 2/3/21 解释为二月三日(美国格式)或二月二日(英国格式)。要么验证并转换为已知格式(即:转换为美国/ISO 格式),要么使用像 moment.js 这样的库来处理格式化/转换。 - andora
不工作 ------Fri Aug 18 2023 11:09:09 GMT+0300>Tue Aug 22 2023 07:42:50 GMT+0300 true如何能够让 18.08.2023 11:09 大于 22.08.2023 7:42 console.log(new Date(updated_at)+'>'+new Date(date), new Date(date) > new Date(updated_at)); - user2573099

2
如果您只想比较日期,则这个方法可以使用。
var dt1 = new Date('12/31/2013');
var dt2 = new Date('12/31/2014');
var dt1obj = Date.parse(dt1);
var dt2obj = Date.parse(dt2);
if(dt2obj <= dt1obj){
//your code here...
}else{
//your code here...
}

2
//StartDate & EndDate two dates

if (StartDate < EndDate)
   // code

if you just want the dates, and not the time

if (StartDate.Date < EndDate.Date)
    // code

1

Try this following code:

function dateCheck() {
    var fDate = new Date("26/05/2013");
    var lDate = new Date("24/05/2013");
    if(fDate <= lDate) {
        alert("true");
        return true;
    }
    alert("false");
    return false;
}

0
var record_day1=fromDate.split("/");
    var sum1=record_day1[1]+'/'+record_day1[0]+'/'+record_day1[2];  
    var record_day2=toDate.split("/");
    var sum2=record_day2[1]+'/'+record_day2[0]+'/'+record_day2[2];  
    var record1 = new Date(sum1);
    var record2 = new Date(sum2); 
    if(record2 < record1)
    {
            alert("End date must be greater than start date");
            return false;
    }  

在这里,我们正在拆分日期,然后将其组合以进行比较,希望它能够正常工作,谢谢.....:)


0
使用日期对象。
    Date1 = new Date('01/12/2013 12:00:00 AM');
    Date2 = new Date('02/12/2013 12:00:00 AM');
    Date1-Date2//in millisecond

0
你可以使用以下代码:Date.parse
if (Date.parse(datetimeStart) < Date.parse(datetimeEnd)) {} else {}

这假设 Date.parse 能够正确处理给定的字符串。对于非美国日期、非 ISO 日期或用户提供的日期,Date.parse 可能无法识别日期分隔符或日期格式,因此会将 2/3/21 混淆为二月三日(美国格式)或二月二日(英国格式)。要么验证并转换为已知格式(即:转换为美国/ISO 格式),要么使用像 moment.js 这样的库来处理格式化/转换。 - andora

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接