javascript - 两个日期之间的独特 1 步差

标签 javascript typescript

一些背景:

我有数据点(当天 + future 5 天,以 3 小时为单位(例如下午 22 点、凌晨 1 点、凌晨 4 点、上午 7 点...)),我想将其按日期排序/分组到数组中(每个日期一个) )。

我的第一次尝试是简单地计算日期中两个日期对象的差异,例如

(datapoint.getTime() - Today.getTime())/millisecondsPerDay。 这不起作用,因为我得到了几天的分数。

然后我对结果使用了 Math.ceil()Math.floor() ,但那是当然的(我一直在查看我的代码同时,所以我的大脑当时没有意识到这个缺陷)也不起作用,因为它将把当天和第二天的部分时间放入同一组(22 pm + 3 小时不是同一天,尽管差异 < 1 天)。

然后我做了一天比较

let diff = tmp.getDate() - today.getDate()
这种方法的问题是,当我在月底并且日期点在接下来的几个月中时,我得到(相对)较高的负值,我不能将其用作数组索引(例如 [0,1,2,4,5,-27])。

问题

在考虑月份变化时,如何以不同的日步计算两个日期之间的差异?

最佳答案

如果您的日期以毫秒为单位,您可以尝试此操作。将两者除以 (24 * 3600 * 1000) 并取 Math.floor() - 这将得到完整的天数。然后只需从今天的结果中减去目标结果即可。

所以,

mils_in_a_day = 24 * 3600 * 1000
today_in_days = Math.floor(today_in_mils / mils_in_a_day)
target_date_in_days = Math.floor(target_date_in_days / mils_in_a_day)
difference_in_days = target_date_in_days - today_in_days

然后要排序,您可以对每个示例执行此操作

results = {}
results[difference_in_days] = target_date_in_days

最终得到这样的哈希

{ 
  '1' : [12356, 123457, 123458], 
  '2' : [234567, 234568, 234569]
}

其中键代表天数差异,值是原始时间戳的数组。然后,您可以对每个数组调用 sort() 以对几天内的时间戳进行排序。

我确信这不是最有效的方法,但应该可以给您带来想法。

关于javascript - 两个日期之间的独特 1 步差,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55386372/

相关文章:

javascript - jquery 中的 for 循环 <p> 标签

javascript - Electron Forge 为其他平台构建应用程序

javascript - 如何使用 JavaScript 避免未使用的变量?

typescript - 如何在 TypeScript 中使用 router.navigate 打开新标签页

Typescript baseUrl 不影响 VS Code 中的模块解析

javascript - 使用 JSDoc 时 Visual Studio Code 中的注释突出显示

typescript - 如何在 firestore 等文档数据库中强制执行显式数据模式?

javascript - 在一次迭代中仅启用一个提交按钮

javascript - 使用javascript在div中显示输入字段值

typescript - VS代码/w。在 TypeScript Monorepo 中更漂亮