输入起始日期和截止日期时,在javascript中以年、月、日为单位计算Perod
我试图在javascript中以年、月、日为单位计算时间输入起始日期和截止日期时,在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
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天。好的,谢谢你们帮我。我设法找到了解决办法。