Javascript 以月、周和天为单位计算两个日期之间的差值

Javascript 以月、周和天为单位计算两个日期之间的差值,javascript,Javascript,我试图计算两个日期之间的差异,例如:(2020年1月1日)和(2021年1月31日)。 我看了momentjs模块,但它不适合我 我想在几个月,几个星期和几天的结果 使用下面的代码,我可以计算月份、天数,但不能计算周数 //Mettreájour le champs durée en Nb de mois 函数减法日期字段1(f1,f2){ var f1=$('#'+f1).val().split(“/”); var date1=新日期(f1[2],f1[1]-1,f1[0]); var f2

我试图计算两个日期之间的差异,例如:(2020年1月1日)和(2021年1月31日)。 我看了momentjs模块,但它不适合我

我想在几个月,几个星期和几天的结果

使用下面的代码,我可以计算月份、天数,但不能计算周数

//Mettreájour le champs durée en Nb de mois
函数减法日期字段1(f1,f2){
var f1=$('#'+f1).val().split(“/”);
var date1=新日期(f1[2],f1[1]-1,f1[0]);
var f2=$('#'+f2).val().split(“/”);
var date2=新日期(f2[2],f2[1]-1,f2[0]);
var timeDiffMonth=Math.abs(date2.getTime()-date1.getTime());
m=数学特鲁克(timeDiffMonth/(1000*60*60*24*365.25/12));
返回m;
}
功能月(f1、f2){
$('#Duree_ProjetsMois').val(subtractDateFields1(f1,f2)).change();//

这将给您两个日期之间的周数

这可能会对您有所帮助。您可以获得月数差异并将其添加到初始日期;然后获得周数差异并再次将其添加到初始日期

沙箱:


我的灵感来自于一个我修改并整合到我的项目中的例子

对于那些感兴趣的人,我想恢复这些值​​在“dd/mm/yyyy”格式的两个“日期”字段中选择一个,并计算差异。 我希望在数月、数周和数天内得到结果

//计算日期f1和f2
功能时差月份(f1、f2){
var f1=$('#'+f1).val().split(“/”);
var date1=新日期(f1[2],f1[1]-1,f1[0]);
var f2=$('#'+f2).val().split(“/”);
var date2=新日期(f2[2],f2[1]-1,f2[0]);
//变量是指日、日、月和日的单位
var oneDay=60*60*24;//秒*分钟*小时
var oneWeek=7;//秒*min*heures*7jours/semaine
var oneMonth=365.25/12;//秒*分钟*小时*焦耳/12毫升
var oneYear=365.25;//秒*分钟*小时*小时
//日内日期差异计算
var days=数学轮((date2-date1)/(60*60*24*1000));
//计算是一项重要的工作
/*var differenceYears=Math.trunc(天/一年);
天数=Math.trunc(一年的天数百分比);
*/
//用石头做的餐厅和餐厅
var differenceMonths=Math.trunc(天/一个月);
天数=Math.abs(天数%1个月);
//计算是指餐馆和餐厅的语义
var differenceWeeks=Math.abs(天/一周);
天数=Math.abs(天数%1周);
//日食酒店
var differenceDays=Math.abs(天);
返回不同的月份;
}
功能月(f1、f2){
$('#Duree_ProjetsMois').val(timeDifferenceMonths(f1,f2)).change();

}
这是否回答了您的问题?感谢您的链接,我的灵感来自于我修改并集成到项目中的一个示例。[code][/code]谢谢,但这不是我的答案。@joe.cocs你已经写过了,用你的代码你可以找到月数和日数,所以用这个你也可以找到周数。另一方面,我建议现在就开始。js如果我在这里问我的问题,那就是尽管我找到了月数和日数,但我无法确定如何找到周数和日数特别是当我测试它是否有效时。周部分没有系统地对应。我不希望使用moment.js,我想了解它是如何找到周数的,每次都是公平的。我不希望使用moment.js,我想了解它是如何找到周数的,每次都是公平的。
function weeksBetween(d1, d2) {
    return Math.round((d2 - d1) / (7 * 24 * 60 * 60 * 1000));
}


weeksBetween(new Date(), new Date(2014, 6, 22));
var moment = require("moment");

var a = moment("2021-01-31");
var b = moment("2020-01-01");

var months = a.diff(b, "months");
b.add(months, "months");

var weeks = a.diff(b, "week");
b.add(weeks, "weeks");

var days = a.diff(b, "days");

console.log(months + " months " + weeks + " weeks " + days + " days");