如何获取自纪元以来的周数?比如米利斯?

Bir*_*sky 2 javascript timezone datetime node.js typescript

我正在 DynamoDb 中对每周报告商店进行建模。

我认为识别报告记录的最佳方法是通过自 1970 年以来各自的周数。很像纪元毫秒。

所以:

  1. 如何获取自 1970 年以来的当前周数?
  2. 如何在给定周数的情况下获取开始日期和结束日期?

考虑到我可能不知道的所有可能的边缘情况,例如夏令时等,我在尝试解决此问题时感到非常不舒服。


澄清:

  • 一周从周日晚上午夜开始。
  • 为了计算出准确的时间,函数 1. 接收所需的 UTC 偏移量(以分钟为单位)。(我愿意在这里接受建议)

O. *_*nes 15

UNIX 时间自 1970 年 1 月 1 日起以秒为单位。

那天是星期四。因此,UNIX 纪元(从该日期开始)第 0 周的 UTC 星期日午夜发生在 UNIX 时间的 -345 600 秒处。第一周的午夜星期日发生在 UNIX 时间 259 200 秒。

UNIX 时间日历不包含闰秒,因此每周恰好有 7 天,604 800 秒长。

因此,要从 UNIX 时间获取 UTC 周数,请执行以下操作。

(unixTime + 345600) div 604800
Run Code Online (Sandbox Code Playgroud)

Javascript 时间戳是以毫秒为单位的 UNIX 时间戳。所以,在 JS 中,就是

Math.floor ((jsTimestamp + 345_600_000) / 604_800_000)
Run Code Online (Sandbox Code Playgroud)

要从周数中获取周日午夜的 Javascript 时间戳,请反转操作。

(weekNumber * 604_800_000) + 345_600_000
Run Code Online (Sandbox Code Playgroud)

这都是 UTC 时间。

  • 向我展示可以使用下划线作为千位分隔符的奖励点。谁知道? (4认同)