如何使用jQuery检查日期与当前日期

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

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

请在下面找到代码

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

所以我的结束日期是今天的日期。但是当前日期仍然大于结束日期。 为什么? 我该如何检查和validation这一点。 我知道某些时间值大于结束日期。 但我想只检查日期/月/年而不是时间。

如果:

 $("#EndDate").val(); 

以m / d / y格式返回一个字符串,您可以使用以下命令将其转换为日期对象:

 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这样的数字时间值,实现将回退到一些实现启发式,将其转换为Date或NaN

所以请不要这样做。 使用Date.parse解析任何字符串都取决于实现(即使是ECMA5中指定的字符串),并且将在不同的浏览器中返回不同的结果。 所以请不要这样做。

请尝试以下方法:

 var end_date = "05/12/2014" if(new Date() > new Date(end_date)) { alert('End date should be greater than Start date'); } 

小提琴

我通过修改这样的代码找到了解决方案

 if (Date.parse(new Date().setHours(0, 0, 0, 0)) > Date.parse($("#EndDate").val())) { // } 

避免时间比较。 有没有其他更好的方法来有效地比较日期没有任何插件。

 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)) { ... } 

你的要求

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

你给我们这个..

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

但是,我迟到了回答这个问题,但这是我解决这个问题的方法:

 var TodayDate = new Date(); var endDate= new Date(Date.parse($("#EndDate").val())); if (endDate> TodayDate) { // throw error here.. }