javascript - 如何获得自纪元以来的周数?像米利斯?
问题描述
我正在为 DynamoDb 中的每周报告商店建模。
我认为识别报告记录的最佳方法是自 1970 年以来各自的周数。很像纪元毫秒。
所以:
- 如何获得自 1970 年以来的当前周数?
- 给定这样的周数,如何获取开始和结束日期?
考虑到我可能不知道的所有可能的边缘情况,比如夏令时和类似情况,我很难解决这个问题。
说明:
- 周从周日晚上午夜开始。
- 为了计算出准确的时间,函数 1. 以分钟为单位接收所需的 UTC 偏移量。(我在这里接受建议)
解决方案
UNIX 时间从 1970 年 1 月 1 日开始以秒为单位。
那天是星期四。因此,UNIX 纪元第零周(从该日期开始)的星期日 UTC 午夜发生在 UNIX 时间的 -345 600 秒。第一周的午夜星期日发生在 UNIX 时间的 259 200 秒。
UNIX 时间日历不包含闰秒,因此每周正好是 7 天,604 800 秒长。
因此,要从 UNIX 时间获取 UTC 中的星期数,请执行此操作。
(unixTime + 345600) div 604800
Javascript 时间戳是以毫秒为单位的 UNIX 时间戳。所以,在 JS 中,就是
Math.floor ((jsTimestamp + 345_600_000) / 604_800_000)
要从周数中获取周日午夜的 Javascript 时间戳,请反转操作。
(weekNumber * 604_800_000) + 345_600_000
这都是 UTC 时间。
推荐阅读
- heroku - Heroku 无法部署 ENOENT
- javascript - 将纹理放在 obj 文件上
- apache-spark - 火花连接问题
- javascript - 使用自定义视图在 columnrange highcharts 中对类别进行分组
- angular - .detectChanges() not working within Angular test
- r - 如果变量名称的格式不一致,如何更正/标准化变量名称
- spring-integration - 用于在流程中存储和检索的弹簧集成 dsl 流程变量
- algorithm - 寻找复杂性的下限和上限
- firebase - 每个设备和消息的 fcm 配额和限制
- javascript - 正则表达式在句子中定义捕获的组