如何使用jQuery检查日期与当前日期是否相同

5

我希望检查我的日期是否大于当前日期

$("#EndDate").val() ="5/13/2014" ->M/d/y

请看下面的代码:
if (Date.parse(new Date()) > Date.parse($("#EndDate").val())) { 

 //condition satisfied for today date too.

}

我的结束日期是今天的日期,但当前日期仍大于结束日期。为什么?我该如何检查和验证这个问题。我知道有时候时间值大于结束日期,但我只想检查日期/月份/年份,而不是时间。


我只是在更新 $("#EndDate").val() 的值,就像这样。 - SivaRajini
更新一个值可以使用 $("#EndDate").val("5/13/2014") - putvande
只翻译文本内容:不要解释。我只是说元素的值类似于代码,但它并不是可理解的代码。 - SivaRajini
1
@dowvoter 没有理由乱投反对票是不好的。 - SivaRajini
6个回答

11
如果:
$("#EndDate").val();
返回一个以月/日/年格式表示的字符串,您可以使用以下方式将其转换为日期对象:
function parseDate(s) {
  var b = s.split(/\D/);
  return new Date(b[2], --b[0], b[1]);
}
为了创建可比较的日期,请继续做你已经在做的事情:

var today = new Date();
today.setHours(0,0,0,0);

所以现在你可以这样做:

if (parseDate($("#EndDate").val()) > today) {
  // date is greater than today
}

或者,如果你真的必须:

if (+parseDate($("#EndDate").val()) > new Date().setHours(0,0,0,0)) ...
请注意,当您执行以下操作时:
Date.parse(new Date().setHours(0, 0, 0, 0))

首先,使用new Date()创建一个新日期。调用setHours()设置时间值,但调用的返回值是Date对象的UTC时间值。

Date.parse期望一个看起来像日期和时间的字符串,因此如果您传递一个类似于1399903200000这样的数字时间值,实现将会回退到一些启发式算法中,要么将其转换为日期,要么返回NaN.

因此,请不要这样做。使用Date.parse解析任何字符串都依赖于具体的实现(即使是在ECMA5中指定的字符串),并且在不同的浏览器中会返回不同的结果,所以也请不要那样做。


5
请尝试以下方法:
var end_date    = "05/12/2014"
if(new Date() > new Date(end_date))
{   
 alert('End date should be greater than Start date');
}

fiddle


1
我自己找到了解决办法,通过修改代码像这样。
if (Date.parse(new Date().setHours(0, 0, 0, 0)) > Date.parse($("#EndDate").val())) {
//
}

为了避免时间比较,有没有其他更好的方式在没有插件的情况下高效地比较日期?

@RobG,你能更新一下哪种比较日期的方式最好吗? - SivaRajini

0

不过,我回答晚了,但这是我的解决方法:

var TodayDate = new Date();
var endDate= new Date(Date.parse($("#EndDate").val()));

if (endDate> TodayDate) {
    // throw error here..
}

0
var startDate = moment.parse("18/02/2013", "DD/MM/YYYY");
var today = new Date();
var dd = today.getDate();
var mm = today.getMonth()+1; //January is 0!
var yyyy = today.getFullYear();

if(dd<10) {
    dd='0'+dd
} 

if(mm<10) {
    mm='0'+mm
} 

today = dd+'/'+mm+'/'+yyyy;


if (today.isAfter(startDate)) {
...
}

0

您正在询问

检查我的日期是否大于当前日期

而您提供给我们的是这个...

if (Date.parse(new Date()) > Date.parse($("#EndDate").val())) { 
    //condition satisfied for today date too.
}

你只需要将你的条件反转,像这样:

if (Date.parse(new Date()) < Date.parse($("#EndDate").val())) { 
    //condition satisfied for today date too.
}

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