Jquery 使用日期选择器计算天数

Jquery calculate days with datepicker

本文关键字:计算 选择器 日期 Jquery      更新时间:2023-09-26

如何使用间隔初始和最终日期选择器计算总天数。对不起,我的英语不好

$(".datepicker").datepicker({
        minDate: 0,
        numberOfMonths: [3,1],
        beforeShowDay: function(date) {
            var date1 = $.datepicker.parseDate($.datepicker._defaults.dateFormat, $("#input1").val());
            var date2 = $.datepicker.parseDate($.datepicker._defaults.dateFormat, $("#input2").val());
            return [true, date1 && ((date.getTime() == date1.getTime()) || (date2 && date >= date1 && date <= date2)) ? "dp-highlight" : ""];
        },
        onSelect: function(dateText, inst) {
            var date1 = $.datepicker.parseDate($.datepicker._defaults.dateFormat, $("#input1").val());
            var date2 = $.datepicker.parseDate($.datepicker._defaults.dateFormat, $("#input2").val());
            var selectedDate = $.datepicker.parseDate($.datepicker._defaults.dateFormat, dateText);

            if (!date1 || date2) {
                $("#input1").val(dateText);
                $("#input2").val("");
                $(this).datepicker();
            } else if( selectedDate < date1 ) {
                $("#input2").val( $("#input1").val() );
                $("#input1").val( dateText );
                $(this).datepicker();
            } else {
                $("#input2").val(dateText);
                $(this).datepicker();
            }
        }
    });

http://jsfiddle.net/sWbfk

计算日期差异(以天为单位)的一种方法如下:

  var t1 = Date.parse($("#input1").val()); // date1.getTime();
  var t2 = Date.parse($("#input2").val()); // date2.getTime();
  var difference = Math.abs(t2 - t1) / 86400000;
  $("#diff").val(difference);

(我通过将代码作为onSelect: function(dateText, inst)的最后一行进行了测试)。

86400000 是计算的 24h x 60min x 60s x 1000ms(一天中的毫秒数)

当你处理日期时,你应该看看moment.js

你可以尝试这样的事情:

时刻

moment($("#input1").val()).diff(moment(selectedDate), "days");

纯 JS

var d1 = new Date(date1);
var d2 = new Date(selectedDate);
var secInDays = 24 * 60 * 60 * 1000;
d1.setHours(0, 0, 0, 0);
d2.setHours(0, 0, 0, 0);
console.log((+d2 - +d1) / secInDays)