繁体   English   中英

如何获得两个日期之间的差额? jQuery Datepicker

[英]How do I get the difference between 2 dates? jquery datepicker

我试图计算选择#from日和q若要天之间的总天数,使用jQuery日期选择器

“在编写本文之前,我已经阅读了很多常见问题,所以我只是在问为什么下面的代码不起作用。”

这是代码:

$(function() {

$( "#from" ).datepicker({
numberOfMonths: 1,
minDate:0,
dateFormat: 'dd-mm-yy',
onClose: function( selectedDate ) {
$( "#to" ).datepicker( "option", "minDate", selectedDate );
$("input[name='to']").val(selectedDate);
var dayFrom = selectedDate; /* Selected From Date */
}
});

$( "#to" ).datepicker({
defaultDate: "+1w",
numberOfMonths: 1,
minDate:0,
dateFormat: 'dd-mm-yy',
onClose: function( selectedDate ) {
$( "#from" ).datepicker( "option", "maxDate", selectedDate );
var dayTo = selectedDate; /* Selected To Date */

$(dayFrom, dayTo).change(function(){
if($(dayFrom).val() && $(dayTo).val()){
var startDate = parseDate($(dayFrom).val());
var endDate = parseDate($(dayTo).val());
var days = calcDaysBetween(startDate, endDate);
var price = calcPrice(days);

$('#finalDagen').html(days);
}
});
function parseDate(s){
var parts = s.split('/');
return new Date(parts[2], parts[0]-1, parts[1]);
}
function calcDaysBetween(startDate, endDate){
return (endDate-startDate)/(1000*60*60*24);
}
}
});
});

观察结果

  • 更改处理程序应注册到from和to元素,而不是注册到包含值的变量
  • 使用小部件方法getDate()来获取小部件的日期值
  • change事件应该在dom ready处理程序中注册-而不是在onClose方法内部

它应该是

jQuery(function ($) {
    var $from = $("#from"),
        $to = $("#to");

    $from.datepicker({
        numberOfMonths: 1,
        minDate: 0,
        dateFormat: 'dd-mm-yy',
        onClose: function (selectedDate) {
            $to.datepicker("option", "minDate", selectedDate);
        }
    });

    $to.datepicker({
        defaultDate: "+1w",
        numberOfMonths: 1,
        minDate: 0,
        dateFormat: 'dd-mm-yy',
        onClose: function (selectedDate) {
            $from.datepicker("option", "maxDate", selectedDate);
        }
    });
    $from.add($to).change(function () {
        var dayFrom = $from.datepicker('getDate');
        var dayTo = $to.datepicker('getDate');
        if (dayFrom && dayTo) {
            var days = calcDaysBetween(dayFrom, dayTo);

            $('#finalDagen').html(days);
        }
    });

    function calcDaysBetween(startDate, endDate) {
        return (endDate - startDate) / (1000 * 60 * 60 * 24);
    }
});

演示: 小提琴

尝试减去两个:

var dayDifference = dayTo - dayFrom;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM