如何计算jQuery Datepicker中的天数和日期范围?

时间:2013-02-26 08:23:16

标签: jquery jquery-ui-datepicker

我正在使用jQuery Datepicker。我能够计算两个选定日期之间的天数,但我需要能够选择一个日期范围(选择'fromdate'成为'minim'代表'todate'并选择'todate'成为'maxim'代表''从日期')。 我正在使用此代码:

<script type="text/javascript">
$(document).ready(function () { 
var selector = function (dateStr) {
        var d1 = $('.fromdate').datepicker('getDate');
        var d2 = $('.todate').datepicker('getDate');
        var diff = 1;
        if (d1 && d2) {
            diff = diff + Math.floor((d2.getTime() - d1.getTime()) / 86400000); // ms per day
        }
        $('.calculated').val(diff);
        $('.minim').val(d1)
    }
$('.fromdate').datepicker({
                dateFormat : 'yy-mm-dd',
                changeMonth: true,
                changeYear: true,
                minDate: 'minim'
});
$('.todate').datepicker({ 
                dateFormat : 'yy-mm-dd',
                changeMonth: true,
                changeYear: true,
                minDate: 'fromdate'
});
$('.fromdate,.todate').change(selector)
});
</script>

谢谢!

2 个答案:

答案 0 :(得分:2)

请查看此DEMO链接,这有助于您计算选定的两个日期之间的天数,并且可以选择日期范围。

$('.fromdate').datepicker().bind("change", function () {
    var minValue = $(this).val();
    minValue = $.datepicker.parseDate("yy-mm-dd", minValue);
    $('.todate').datepicker("option", "minDate", minValue);
    calculate();
});
$('.todate').datepicker().bind("change", function () {
    var maxValue = $(this).val();
    maxValue = $.datepicker.parseDate("yy-mm-dd", maxValue);
    $('.fromdate').datepicker("option", "maxDate", maxValue);
    calculate();
});

我希望这会对你有所帮助。

答案 1 :(得分:0)

感谢Bojan Kovacevic我设法解决了我的问题。就像这样:

<script type="text/javascript">
$(document).ready(function () { 
var selector = function (dateStr) {
        var d1 = $('.fromdate').datepicker('getDate');
        var d2 = $('.todate').datepicker('getDate');
        $('.fromdate').datepicker("option", "maxDate",d2); //new line           
        $('.todate').datepicker("option", "minDate",d1); // new line
        var diff = 1;
        if (d1 && d2) {
            diff = diff + Math.floor((d2.getTime() - d1.getTime()) / 86400000);
        }
        $('.calculated').val(diff);
        $('.minim').val(d1)
    }    
$(".fromdate").datepicker({
                dateFormat : 'yy-mm-dd',
                changeMonth: true,
                changeYear: true,
});
$('.todate').datepicker({
                dateFormat : 'yy-mm-dd',
                changeMonth: true,
                changeYear: true,
                minDate: ($(".fromdate").is(":visible") && $(".todate").html() != ""? $('.todate').datepicker('getDate'): 'null'), // new line
});
$('.fromdate,.todate').change(selector)
});