输入起始日期和截止日期时,在javascript中以年、月、日为单位计算Perod

输入起始日期和截止日期时,在javascript中以年、月、日为单位计算Perod,javascript,period,Javascript,Period,我试图在javascript中以年、月、日为单位计算时间 function getMonthsBetween (date1, date2) { 'use strict'; // Months will be calculated between start and end dates. // Make sure start date is less than end date. // But remember if the difference should be

我试图在javascript中以年、月、日为单位计算时间

function getMonthsBetween (date1, date2)
{
    'use strict';
    // Months will be calculated between start and end dates.
    // Make sure start date is less than end date.
    // But remember if the difference should be negative.
    var start_date = date1;
    var end_date = date2;
    var inverse = false;

    if (date1 > date2)
    {
        start_date = date2;
        end_date = date1;
        inverse = true;
    }

    end_date = new Date(end_date); //If you don't do this, the original date passed will be changed. Dates are mutable objects.

    end_date.setDate(end_date.getDate() + 1);

    // Calculate the differences between the start and end dates
    var yearsDifference = end_date.getFullYear() - start_date.getFullYear();
    var monthsDifference = end_date.getMonth() - start_date.getMonth();
    var daysDifference = end_date.getDate() - start_date.getDate();

    var interval_month = yearsDifference +'-'+ monthsDifference +'-'+ daysDifference; 
    return interval_month;// Add fractional month
}
问题是,当日期像日期1:2017年4月3日和日期2:2017年4月30日那样过去时。它返回27天,但实际上这是从4月3日到30日的28天

如果你想用一年、一个月、一天来计算准确的天数,我已经花了两天时间了。

看看这个例子:

[https://jsfiddle.net/2ozuvn0L/2/]
在本例中,您需要传递开始和结束日期

getPeriod(新日期(2016年3月3日),新日期(2017年3月30日))

答案是:
从4月3日到27日的第1年、第0个月和第27天

28天
?对不起,我的坏消息,从4月3日到30日的28天。我不知道如何编辑我的问题。你所要做的就是将输入解析成一个
Date
对象。由于
Date
由时间戳表示,因此它允许算术运算(+、-、*、/,%)。这里有一个参考:当你得到一个合适的期限,如
Date
,你可以通过
dateObj.getFullYear()
dateObj.getMonth()
等,得到月、年等。我想从4月3日到4月30日有28天。好的,谢谢你们帮我。我设法找到了解决办法。