标题说明了一切。我在其他领域使用MomentJS,所以我对使用时刻的解决方案感到满意(或者不是 - 无论哪种方式都很好)。在此解决方案中,函数将返回到比较日期的最短路径。例如比较12-31到01-01将返回1,而不是364.基本上这就是我要做的事情:
var today = '08-06'; // august 6th
var dateOne = '09-03' // september 3rd
var dateTwo = '02-29' // february 29th
var dateThree = '01-01' // january 1st
getDifferenceInDays(today, dateOne); // => 28
getDifferenceInDays(today, dateTwo); // => -159
getDifferenceInDays(today, dateThree); // => 147
答案 0 :(得分:1)
通过从Date对象获取月中的月份和日期,您应该可以使用MomentJS轻松完成此操作。
var getDifferenceInDays = function(date1, date2) {
var day1 = date1.dayOfYear();
var day2 = date2.dayOfYear();
if (Math.abs(day1 - day2) < (365 - Math.abs(day2 - day1))) {
return Math.abs(day1 - day2);
} else {
return (365 - Math.abs(day1 - day2));
}
}
片刻&#34; dayOfYear()&#34;函数返回一年中的某一天(1到366之间的数字)。希望这有帮助!
答案 1 :(得分:1)
这适用于MomentJS。需要注意的是,当您初始化MomentJS日期时,它会隐含地将年份添加到今年。因此,假设这些值是为今年计算的
function getDifferenceInDays(date1, date2) {
var day1 = moment(date1,'MM-DD').dayOfYear();
var day2 = moment(date2,'MM-DD').dayOfYear();
var diff1=(day2 - day1)
var diff2=365- Math.abs(diff1)
if (Math.abs(diff1)>Math.abs(diff2)) {
return diff2;
} else {
return diff1;
}
}
var today = '08-06'; // august 6th
var dateOne = '09-03' // september 3rd
var dateTwo = '02-29' // february 29th
var dateThree = '01-01' // january 1st
console.log(";;;;")
console.log(getDifferenceInDays(today, dateOne)); // => 28
console.log(getDifferenceInDays(today, dateTwo)); // => -159
console.log(getDifferenceInDays(today, dateThree)); // => 147