如何检查输入的日期是否等于今天的日期?

问题描述 投票:0回答:12

我有一个 id 为“date_trans”的表单输入。该日期输入的格式(经过服务器端验证)可以是以下任何一种:

  • 日/月/年
  • 年-月-日
  • 年-月-日
  • 年/月/日

但是,在发布表单之前,我想检查 date_trans 字段的日期是否等于今天的日期。如果获取的日期是客户端的日期(即它使用js)就可以了,因为我也在服务器上运行了双重检查。

我完全不知道如何在 jQuery 或普通的旧 JavaScript 中进行日期比较。如果有帮助,我正在使用 jquery datepicker

javascript jquery
12个回答
235
投票

纯 JS 中的简单日期比较就足够了:

// Create date from input value
var inputDate = new Date("11/21/2011");

// Get today's date
var todaysDate = new Date();

// call setHours to take the time out of the comparison
if(inputDate.setHours(0,0,0,0) == todaysDate.setHours(0,0,0,0)) {
    // Date equals today's date
}

这是一个正在运行的 JSFiddle


131
投票

为了完整起见,取自此解决方案

您可以使用 toDateString:

var today = new Date();
var isToday = (today.toDateString() == otherDate.toDateString());

没有库依赖项,并且看起来比之前答案中显示的“setHours()”方法更干净,恕我直言


24
投票

尝试使用 moment.js

moment('dd/mm/yyyy').isSame(Date.now(), 'day');

如果需要,您可以将“日”字符串替换为“年、月、分”。


13
投票
function sameDay( d1, d2 ){
  return d1.getUTCFullYear() == d2.getUTCFullYear() &&
         d1.getUTCMonth() == d2.getUTCMonth() &&
         d1.getUTCDate() == d2.getUTCDate();
}

if (sameDay( new Date(userString), new Date)){
  // ...
}

使用 UTC* 方法可确保不同时区中与同一全球日期匹配的两个等效日期相同。 (如果您直接解析两个日期则没有必要,但值得考虑的一件好事。)


7
投票

只需在您的 javaScript 中使用以下代码:

if(new Date(hireDate).getTime() > new Date().getTime())
{
//Date greater than today's date 
}

根据您的要求更改条件。这里有一个比较链接在java脚本中比较


1
投票

以下解决方案将时间戳整数除以小时、分钟、秒、毫秒的值进行比较。

var reducedToDay = function(date){return ~~(date.getTime()/(1000*60*60*24));};
return reducedToDay(date1) == reducedToDay(date2)

波形符截断除法结果(参见这篇关于整数除法的文章


0
投票

试试这个

// method to check date is less than today date
  isLessDate(schedule_date : any){
    var _schedule_date = new Date(schedule_date);
    var date = new Date();
    var transformDate = this.datePipe.transform(date, 'yyyy-MM-dd');
    var _today_date = new Date(''+transformDate);
    if(_schedule_date < _today_date){
      return 'small'
    }
    else if(_schedule_date > _today_date){
      return 'big'
    }
    else {
      return 'same'
    }
  }

0
投票

您可以使用此函数来计算这个值(86_400_000 是每天的毫秒数)。

function isSameDay(date1, date2) {
    return Math.abs(date1.getTime() - date2.getTime()) < 86_400_000
      && date1.getDate() === date2.getDate();
}

isSameDay(new Date("2011-11-21"), new Date("2011-11-21")); // true
isSameDay(new Date("2011-11-21"), new Date("2011-11-22")); // false

-1
投票

Date.js 是一个用于操作和格式化日期的便捷库。在这种情况下它可以提供帮助。


-1
投票

typescript
中比较日期的最佳方法和推荐方法是:

var today = new Date().getTime();
var reqDateVar = new Date(somedate).getTime();

if(today === reqDateVar){
 // NOW
} else {
 // Some other time
}

-3
投票
TodayDate = new Date();
if (TodayDate > AnotherDate) {} else{}

< = also works, Although with =, it might have to match the milliseconds.


-3
投票

有一个更简单的解决方案

if (inputDate.getDate() === todayDate.getDate()) {
   // do stuff
}

这样你就不会失去

inputDate
(如果有的话)的时间

© www.soinside.com 2019 - 2024. All rights reserved.