我想检查我的日期是否大于当前日期
$("#EndDate").val() ="5/13/2014" ->M/d/y
请查看以下代码
if (Date.parse(new Date()) > Date.parse($("#EndDate").val())) {
//condition satisfied for today date too.
}
所以我的结束日期是今天的日期。但是当前日期仍然大于结束日期。为什么?我该如何检查和验证这一点。我知道某些时间值大于结束日期。但我想只检查日期/月/年而不是时间。
答案 0 :(得分:9)
如果:
$("#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那样的数字时间值,那么实现将回到某些实现启发式转向它进入日期或 NaN 。
所以请不要这样做。使用 Date.parse 解析任何字符串都取决于实现(即使是ECMA5中指定的字符串),并且会在不同的浏览器中返回不同的结果。所以请不要这样做。
答案 1 :(得分:3)
尝试如下:
var end_date = "05/12/2014"
if(new Date() > new Date(end_date))
{
alert('End date should be greater than Start date');
}
答案 2 :(得分:1)
我通过修改像这样的代码找到了我自己的解决方案
if (Date.parse(new Date().setHours(0, 0, 0, 0)) > Date.parse($("#EndDate").val())) {
//
}
避免时间比较。还有其他更好的方法可以在没有任何插件的情况下以有效的方式比较日期。
答案 3 :(得分: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.
}
答案 4 :(得分: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)) {
...
}
答案 5 :(得分:0)
但是,我迟到了回答这个问题,但这是解决这个问题的方法:
var TodayDate = new Date();
var endDate= new Date(Date.parse($("#EndDate").val()));
if (endDate> TodayDate) {
// throw error here..
}