日期范围选择

时间:2014-09-11 12:55:09

标签: javascript html jsp dojo

我试图获取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 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

Date.parse()方法返回1970年1月1日之间返回的毫秒数。您可以在每个日期运行解析,然后通过减法获得值的差异。然后,您需要将时间(以毫秒为单位)转换为几天。