通过与javascript中的今天日期比较,允许今天的日期和将来的日期

问题描述:

我有一个参赛表格,我可以允许今天的日期和将来的日期,但不能允许昨天和前几天。我需要在客户端使用java-script进行验证。通过与javascript中的今天日期比较,允许今天的日期和将来的日期

var futuredate = new Date($("#Deadline").val()); 
var today = new Date(); 

这给了我日期和时间。 Mon Nov 04 2013 00:00:00 GMT+0530 (India Standard Time) 我只想日期进行比较,当用户输入当天日期 进入日期是:从新日期Fri Apr 05 2013 00:00:00 GMT+0530 (India Standard Time) 当前日期():Fri Apr 05 2013 16:53:00 GMT+0530 (India Standard Time)

我尝试使用sethours()它好工作为当前月,但其转换日期在输入日期是前一个月还是之前的任何月份时,它会产生问题。例如: 例如:输入日期是23/3/2013,今天是5/4/2013它认为输入的日期有效。

var futuredate = new Date($("#Deadline").val()).setHours(0, 0, 0, 0); 
var today = new Date().setHours(0, 0, 0, 0); 
if (futuredate >= today) { 
    alert("Valid"); 
} 
else if (futuredate < today) { 
    alert("InValid"); 
} 
+0

上有比较日期答案的负荷看看这里 - HTTP:/ /*.com/questions/11170054/compare-two-dates-with-javascript – 2013-04-05 11:10:10

+0

我想比较日期没有时间...我已经冲浪堆栈的答案...他们没有解决我的问题... – blue 2013-04-05 11:12:03

+0

@bluesky什么是你的输入日期,只是提供一个例子。 – 2013-04-05 11:13:05

试试下面,它使用一个小功能使用setHours()之前,您datestring解析成日期对象。如果你的字符串格式为dd/mm/yyyy或dd-mm-yyyy,这将起作用。

var futuredate = parseDate(input).setHours(0, 0, 0, 0); 
var today = new Date().setHours(0, 0, 0, 0); 
if (futuredate >= today) { 
    alert("Valid"); 
} 
else if (futuredate < today) { 
    alert("InValid"); 
} 

//function to return a date object from the date string passed to it 
function parseDate(input) { 
    var parts = input.match(/(\d+)/g); 
    return new Date(parts[2], (parts[1]-1), parts[0]); 
} 

刚刚拆分的日期,并设置日期函数的概念。采用这种方式,我们可以很容易地比较日期

var a =futuredate.split('/'); 
var b =today.split('/'); 
var date1 = new Date(a[2],a[1],a[0]); 
var date2 = new Date(b[2],b[1],b[0]); 

if (date1 >= date2) { 
    alert("Valid"); 
} 
else if (date1 < date2) { 
    alert("InValid"); 
}