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

IT技术 javascript jquery
2021-03-05 11:08:17

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

  • 日/月/年
  • dd-mm-yyyy
  • yyyy-mm-dd
  • 年/月/日

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

我完全不知道如何在 jQuery 或只是简单的旧 javascript 中进行日期比较。如果有帮助,我正在使用jquery datepicker

6个回答

纯 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

如果您想重用它,请不要忘记克隆输入日期。==> 使用 newDate(date.valueOf()).setHours(0,0,0,0)
2021-04-16 11:08:17
这当然等于 if( (new Date(inputDate)).setHours(0,0,0,0) === (new Date()).setHours(0,0,0,0) )
2021-04-29 11:08:17
如果日期格式为“21-11-2011”或“21/11/2011”则不起作用
2021-05-05 11:08:17
+1 用于使用setHours.
2021-05-06 11:08:17
当时间晚于下午 3 点时,这并不总是对我有用,因为我是 utc-8。schellmax 的答案(stackoverflow.com/a/26257591/2886089)效果更好。
2021-05-13 11:08:17

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

您可以使用 toDateString:

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

没有库依赖关系,看起来比上一个答案中显示的“setHours()”方法更干净,恕我直言

@Winnemucca,使用 === 并不总是更好。
2021-04-22 11:08:17
这很棘手。在角度手表的情况下,我有 newDates[i] =1476252000000 和 oldDates[i] === 1476252000000。但是,它们不相等。Date.parse(newDates[1]) === Date.parse(oldDates[1]) 返回 false。
2021-05-03 11:08:17
当您处理大量比较时,整数比较优于字符串。此源代码适用于 c++,但没有区别,因为它处于机器级别
2021-05-04 11:08:17
@Winnemuccatrue为我返回给定的值。您不必Date.parse用于平等检查
2021-05-09 11:08:17

尝试使用 moment.js

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

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

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

是的,您是对的,不会有太大的可测量差异-但我说的是哲学;)
2021-04-23 11:08:17
@xcy7e웃 取决于输入数据,但可能。但是,如果您可以创建一个测试用例,其中这实际上会产生任何可衡量的差异,我会印象非常深刻。
2021-04-26 11:08:17
您应该提到,这实际上是月份索引而不是月份编号本身,因此需要加1
2021-04-30 11:08:17
在大多数情况下,首先检查相等的天数,然后是月然后是年会不会更快?
2021-04-30 11:08:17

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

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

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