1

我正在使用 jquerydatepicker来获得 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 个小时。我很确定会有一个简单的解决方案,但作为初学者,我无法发现它。我知道这里有类似的主题,但我无法让它发挥作用,或者它不适合我的问题。

4

3 回答 3

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;
}

工作镜头

在此处输入图像描述

于 2013-10-10T08:22:24.910 回答
3

既然你提到你不应该改变格式,我有一个解决方案给你。

在@TJ Crowder's Answer的帮助下,我做到了

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

检查这个JSFiddle

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

在此处输入图像描述

于 2013-10-10T08:32:55.260 回答
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 ..
于 2015-08-29T04:25:31.717 回答