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

Javascript 如何获得两个日期之间的月份,javascript,jquery,jquery-ui,date,datepicker,Javascript,Jquery,Jquery Ui,Date,Datepicker,我使用jquerydatepicker来获取两个日期。在我的情况下,我必须以这种格式获取日期d-M-y。我使用它是为了能够在不进行任何格式化的情况下将值插入到oracle数据库中。问题是我需要计算两个日期之间的月份。例如:1-10-13-30-10-16 以下是我如何在js中获得日期: LastAssimDatePicker = (function() { $( "#lastAssimilationDate" ).datepicker({

我使用jquery
datepicker
来获取两个日期。在我的情况下,我必须以这种格式获取日期
d-M-y
。我使用它是为了能够在不进行任何格式化的情况下将值插入到
oracle
数据库中。问题是我需要计算两个日期之间的月份。例如:
1-10-13
-
30-10-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个变量
-
lastassimpdate
lastassimpdateover


问题是我真的找不到一种方法来计算这两个日期之间的月份,我已经在上面浪费了大约2个小时。我很确定会有一个简单的解决方案,但作为一个初学者,我无法发现它。我知道这里有类似的主题,但我无法让它工作,或者它不适合我的问题。

工作演示或者如果您希望两个月都包括在内,请尝试此演示:

这将适合你的需要,可以有很多版本

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

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

希望这有助于
:)

代码

$('.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;
}
$('.start,.end').datepicker();
$('.hulk')。单击(函数(){
var sDate=$('.start').val();
var nDate=$('.end').val();
var startdate=新日期(sDate);
var enddate=新日期(数据);
setDate(enddate.getDate()-startdate.getDate());
警报(monthDiff(开始日期,结束日期));
});
函数monthDiff(d1、d2){
var月;
月份=(d2.getFullYear()-d1.getFullYear())*12;
月份-=d1.getMonth()+1;
月份+=d2.getMonth();

返回月份工作演示或者如果您想同时包含这两个月,请尝试此演示:

这将适合你的需要,可以有很多版本

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

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

希望这有助于
:)

代码

$('.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;
}
$('.start,.end').datepicker();
$('.hulk')。单击(函数(){
var sDate=$('.start').val();
var nDate=$('.end').val();
var startdate=新日期(sDate);
var enddate=新日期(数据);
setDate(enddate.getDate()-startdate.getDate());
警报(monthDiff(开始日期,结束日期));
});
函数monthDiff(d1、d2){
var月;
月份=(d2.getFullYear()-d1.getFullYear())*12;
月份-=d1.getMonth()+1;
月份+=d2.getMonth();

return months自从您提到您不应该更改格式后,我为您提供了一个解决方案

在@T.J.Crowder's的帮助下,我做到了这一点

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

不确定
Nan
是否弹出,但我能看到不同之处

    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 ..

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

在@T.J.Crowder's的帮助下,我做到了这一点

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

不确定
Nan
是否弹出,但我能看到不同之处

    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 ..

函数CalculateMonthyr(){
var fromDate=新日期($('#txtFrom').val();//日期选择器(文本字段)
var toDate=新日期($('#txtTo').val();//日期选择器
var月;
月=(toDate.getFullYear()-fromDate.getFullYear())*12;
月份+=toDate.getMonth();
如果(toDate.getDate()
函数CalculateMonthyr(){
var fromDate=新日期($('#txtFrom').val();//日期选择器(文本字段)
var toDate=新日期($('#txtTo').val();//日期选择器
var月;
月=(toDate.getFullYear()-fromDate.getFullYear())*12;
月份+=toDate.getMonth();
如果(toDate.getDate()
我需要计算两个日期之间的月数
你能给出一个示例日期吗?问题是我不知道如何做…你想知道这个范围包含多少个月吗?这意味着
13年10月1日-16年10月30日之间的月数
?你的问题已经得到了回答。请参见-
我需要计算月数两个日期之间的月数
你能给出一个示例日期吗?问题是我不知道怎么做…你想知道这个范围包含多少个月吗?这意味着13年10月1日-16年10月30日之间的月数
?你的问题已经得到了回答。请看-@Slim,但我能得到月差。不确定具体的月份
Nan
检查我答案中的图片。哇,我注意到它在firefox和IE下不起作用。@Slim你知道了,我可以在FF中复制。让我尝试一下,然后带一些解决方案回来。我也会看看。我希望它可以被修复。@Slim但我可以得到月差。不确定
Nan
检查我答案中的图片。哇,我注意到它在firefox和IE下不起作用。@Slim你知道了,我可以在FF中复制。让我尝试并提供一些解决方案。我也会查看。我希望它可以修复。:)