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

时间:2011-11-21 17:02:50

标签: javascript jquery

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

  • 日/月/年
  • DD-MM-YYYY
  • YYYY-MM-DD
  • YYYY / MM / DD

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

我完全迷失了如何在jQuery或简单的旧javascript中进行日期比较。如果有帮助,我使用jquery datepicker

11 个答案:

答案 0 :(得分:171)

纯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
}

这是a working JSFiddle

答案 1 :(得分:71)

完整性,取自this solution

您可以使用toDateString:

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

没有库依赖关系,看起来比' setHours()'更干净。 imho

在前一个答案中显示的方法

答案 2 :(得分:22)

尝试使用moment.js

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

如果需要,您可以将'day'字符串替换为'year,month,minute'。

答案 3 :(得分:10)

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 *方法可确保在同一全球日匹配的不同时区中的两个等效天数相同。 (如果您直接解析这两个日期,则没有必要,但要考虑好事。)

答案 4 :(得分:6)

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

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

根据您的要求更改条件。这是比较的一个链接compare in java script

答案 5 :(得分:0)

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

答案 6 :(得分:0)

以下解决方案将时间戳整数除以小时,分钟,秒,毫秒的值。

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

代字号截断分割结果(参见this article about integer division

答案 7 :(得分:0)

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

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

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

答案 8 :(得分:-1)

TodayDate = new Date();
if (TodayDate > AnotherDate) {} else{}

< =也有效,虽然有=,它可能必须匹配毫秒。

答案 9 :(得分:-1)

有一个更简单的解决方案

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

就像你没有把inputDate所附的时间(如果有的话)放在一边

答案 10 :(得分:-14)

您是否看过 datejs ? (使用适当的全球化包正确解析dd / mm / yyyy)

只需将日期传递到parse()方法,然后与今天的日期进行比较。