javascript - 如何在不使用年份的情况下比较 Javascript 中的日期?

标签 javascript

标题说明了一切。我正在使用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

最佳答案

这适用于 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

http://jsfiddle.net/r2brgf4r/

关于javascript - 如何在不使用年份的情况下比较 Javascript 中的日期?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31858608/

相关文章:

javascript - 如何通过 php 设置/更改 cookie?

javascript - tensorflowjs 加载重新训练的 coco-ssd 模型 - 在浏览器中不起作用

javascript - 获取 JavaScript 表单总量

javascript - 在 javascript 中创建自己的 sort() 函数

javascript - Typescript 中的类型保护正在缩小到从不键入

javascript - JSDoc 对解构参数的注释在 VSCode 中不起作用

javascript - 我想打开 onclick 两个页面,一个内部页面,一个外部页面

javascript - Mongo - 基于名称的值总和的聚合

javascript - 在 main.ts (typescript) 内的一个函数中加载外部 javascript 函数

javascript - 如何确保一个函数在调用另一个函数之前已经完成 - Promise Chaining Angular JS?