如何获得2个日期之间的月份

时间:2013-10-10 08:13:31

标签: javascript jquery jquery-ui date datepicker

我正在使用jquery datepicker来获得2个日期。在我的情况下,我必须以这种格式d-M-y获取日期。我正在使用它,以便能够将值插入oracle数据库而无需任何格式化。问题是我需要计算两个日期之间的月份。例如:1-Oct-13 - 30-Oct-16

以下是我在js中获取日期的方式:

LastAssimDatePicker = (function() {
                        $( "#lastAssimilationDate" ).datepicker({
                            yearRange: "-20:+100",
                            changeMonth: true,
                            changeYear: true,
                            dateFormat: "d-M-y"
                        });
                    }),

LastAssimDateOverPicker = (function() {
                        $( "#lastAssimilationDateOver" ).datepicker({
                            yearRange: "-20:+100",
                            changeMonth: true,
                            changeYear: true,
                            dateFormat: "d-M-y"
                        });
                    }),

以上日期已分配到2 variables - lastAssimilationDateLastAssimDateOver

问题是我真的找不到计算两个日期之间的月份的方法,而且我已经失去了大约2个小时。我很确定会有一个简单的解决方案,但作为初学者,我无法发现它。我知道这里有类似的主题,但我无法使其正常工作,或者它不符合我的问题。

3 个答案:

答案 0 :(得分:4)

工作演示 http://jsfiddle.net/w54pq/ 如果您想要两个月,请尝试此演示:http://jsfiddle.net/yQyJq/

这符合您的需求,可以有很多版本。

请注意,您可以根据需要进行各种组合,因此请随意使用此代码。

旧链接其中一个是我的旧回复:

希望这有助于:)

<强>码

$('.start,.end').datepicker();

$('.hulk').click(function () {
    var sDate = $('.start').val();
    var nDate = $('.end').val();

    var startdate = new Date(sDate);
    var enddate = new Date(nDate);

    enddate.setDate(enddate.getDate() - startdate.getDate());
    alert(monthDiff(startdate,enddate));
});


function monthDiff(d1, d2) {
    var months;
    months = (d2.getFullYear() - d1.getFullYear()) * 12;
    months -= d1.getMonth() + 1;
    months += d2.getMonth();
    return months <= 0 ? 0 : months;
}

工作镜头

enter image description here

答案 1 :(得分:3)

由于您提到您不应该更改格式,因此我为您提供了解决方案。

在@ T.J的帮助下。克劳德Answer,我做了这个

d1 = new Date($( "#lastAssimilationDate" ).val());
d2 = new Date($( "#lastAssimilationDateOver").val());
alert(monthDiff(d1, d2));

选中此JSFiddle

不确定Nan是否正在弹出,但我能够看到差异。

enter image description here

答案 2 :(得分:3)

    function calcualteMonthYr(){
    var fromDate =new Date($('#txtFrom').val()); //datepicker (text fields)
    var toDate = new Date($('#txtTo').val()); // datepicker

     var months;
        months = (toDate.getFullYear() - fromDate.getFullYear()) * 12;
        months += toDate.getMonth();
        if (toDate.getDate() < fromDate.getDate())
        {
            months--;
        }
    $('#txtTimePeriod2').val(months);
}
// it also consider dates so you would get exact months ..