2013-04-05 102 views
-1

我有一個參賽表格,我可以允許今天的日期和將來的日期,但不能允許昨天和前幾天。我需要在客戶端使用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:/ /stackoverflow.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

回答

1

試試下面,它使用一個小功能使用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]); 
} 
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"); 
}