如何检查inputdate是否等于今天的date?

我有一个ID为'date_trans'的表单input。 该dateinput的格式(经过validation的服务器端)可以是以下任何一种:

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

但是,在发布表单之前,我想检查一下date_trans字段的date是否等于今天的date。 它确定如果所采用的date是客户的date(即它使用js),因为我运行一个双重检查服务器以及。

我完全失去了如何做jQuery的datecomparrison或只是普通的旧javascript。 如果有帮助,我使用jquery datepicker

你看过datejs吗? (使用适当的全球化包正确parsingdd / mm / yyyy)

只需将date传递给它的parse()方法,并与今天的date进行比较。

纯JS的简单date比较应该足够了:

 // 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 。

为了完整性,从这个解决scheme中获得 :

你可以使用toDateString:

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

没有库依赖关系,看起来比上一个答案imho中显示的“setHours()”方法更清洁

尝试使用moment.js

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

如果需要的话,可以用'年,月,分'代替'日'string。

 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 *方法可确保在不同时区匹配相同全球一天的两个当天date相同。 (如果您直接parsing这两个date,则不需要,但想一想就好了。)

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

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

根据您的要求更改条件。这里是一个比较在Java脚本中的一个环节

Date.js是用于操作和格式化date的方便的库。 它可以帮助在这种情况下。

以下解决scheme比较时间戳整数除以小时,分钟,秒,毫秒的值。

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

代字号截断除法结果(请参阅关于整数除法的文章 )

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

<=也可以,尽pipe使用=,它可能必须匹配毫秒。