2014-09-11 294 views
0

我試圖得到fromDate和toDate之間的天數,因爲用戶不應選擇超過90天。我使用dojo來獲取日期日曆。 下面是我嘗試過的代碼,但輸出結果並不如預期,請建議。日期範圍選擇

<script> 
function parseDate(str) { 
    var mdy = str.split('-') 
    return new Date(mdy[2], mdy[0]-1, mdy[1]); 
} 

function daydiff(first, second) { 
    return (second-first)/(1000*60*60*24); 
} 

function daysDifference(){ 
    var fromDate = document.getElementById("fromDate").value; 
    var toDate = document.getElementById("toDate").value; 
    alert(fromDate); 
alert("days difference" + daydiff(parseDate(fromDate),parseDate(toDate))); 
} 
</script> 
<form id="myform" name="myform" action="checkData.htm"> 


    From Date:<input type="text" name="fromDate" id="fromDate" value="" data-dojo-type="dijit/form/DateTextBox" required="true" constraints="{ datePattern: 'dd-MM-yyyy'}" /> </td> 
    To Date:<input type="text" name="toDate" id="toDate" value="" data-dojo-type="dijit/form/DateTextBox" required="true" constraints="{ datePattern: 'dd-MM-yyyy'}"/> </td> 
    <input type="submit" value="submit" onclick="daysDifference();"/> 

</form> 

請建議我如何限制用戶選擇90天之間的日期範圍。

回答

2

你可以試試這樣:

var fromDate = new Date("7/11/2014"); 
var toDate = new Date("12/12/2015"); 
var timeDiff = Math.abs(toDate.getTime() - fromDate.getTime()); 
var diffDays = Math.ceil(timeDiff/(1000 * 3600 * 24)); 
if(diffDays > '90') 
alert("Select a date range in 90 dates from toDate"); 

JSFIDDLE DEMO

+0

@scrit: - 你能告訴我,在的jsfiddle?我在JSFiddle中添加了代碼,併爲我工作。讓我看看你的代碼,以便我可以找到它 – 2014-09-11 13:23:10

+0

對不起,我試着以相反的順序dd/MM/yyyy,那是我得到NaN時,現在我修改爲MM/dd/yyyy並獲得了預期的輸出。感謝+1。 – scrit 2014-09-11 13:27:24

+0

@scrit: - 不客氣:) – 2014-09-11 13:27:48

0

Date.parse()方法返回的返回數是1970年1月1日之間的毫秒數。您可以在每個日期運行解析,然後通過減法獲取值的差異。然後,您需要將時間以毫秒爲單位轉換爲幾天。