如何在JavaScript中的两个日期之间获得相对几天的差异



我知道有很多与此相似的问题,但是我能找到的所有示例都在问如何获得 absolute 天数差异。p>我如何获得相对天的数量(秒秒(和JavaScript中的当前时间,例如

function getDaysDelta(secs) {
    var hoursDelta = Math.ceil((secs - NOW_SECS) / 3600);
    ????
} 

如果现在是22:00,而所提供的值是第二天的04:00,我希望该功能返回1,因为差异有1天。同样,如果现在是04:00,而所提供的值是前一天的22:00,我希望该功能返回-1。如果所提供的值在今天的某个时候下降,则应返回0。

我想避免拉动怪物依赖性,因此纯JS是可取的,尽管我确实对jQuery有依赖性(V2(,因此涉及的解决方案可以很好。

您可以将两个日期中的时间删除,请参见以下内容:

var MS_PER_DAY = 1000 * 60 * 60 * 24;
function dateDiffInDays(a, b) {
  //Ignore time and timezone
  var utc1 = Date.UTC(a.getFullYear(), a.getMonth(), a.getDate());
  var utc2 = Date.UTC(b.getFullYear(), b.getMonth(), b.getDate());
  return Math.floor((utc2 - utc1) / MS_PER_DAY);
}
var d11 = new Date(2017, 6, 26, 22);
var d12 = new Date(2017, 6, 26, 4);
console.log("Example 1");
console.log(d11.toLocaleString());
console.log(d12.toLocaleString());
console.log("Diff: ", dateDiffInDays(d11, d12));
var d21 = new Date(2017, 6, 26, 22);
var d22 = new Date(2017, 6, 27, 4);
console.log("nExample 2");
console.log(d21.toLocaleString());
console.log(d22.toLocaleString());
console.log("Diff: ", dateDiffInDays(d21, d22));
var d21 = new Date(2017, 6, 27, 22);
var d22 = new Date(2017, 6, 26, 4);
console.log("nExample 3");
console.log(d21.toLocaleString());
console.log(d22.toLocaleString());
console.log("Diff: ", dateDiffInDays(d21, d22));

我希望它能帮助您,再见。

怎么样?

let dayDifference = Math.floor((secs.getTime() - NOW_SECS.getTime()) / 1000 / 3600 / 24);

secs now_secs 都是JavaScript日期。

最好在日期计算之前使用getTime(),以清晰地计算。getTime()以毫秒为单位返回UNIX时间戳。JavaScript在提取日期时隐含地执行此操作,但是如果要将( (秒/小时/...添加到日期,则会失败。它将将日期转换为字符串和连接。

最新更新