Nob*_*ody 14
在看到Greg Miller的"Time Programming Fundamentals"谈到 Google的cctz C++库之后,我对之前的回答感到不满.
处理时间是一个非常复杂的主题(即使折扣相对论效应).我们必须尊重具有不均匀偏移的时区,夏令时, 由于立法变化或闰秒导致的时间跳跃以及可能更多的怪癖.虽然其中许多只在时间和空间上产生局部影响,但我们程序的用户仍然不幸受到影响.
最好依靠holodoc的答案等底层函数来处理时区管理的怪癖.
当我没记错的时候,时间戳正好在2010年1月1日零点开始,所以它应该足以将它除以3600(浮动)然后再舍入/ floor/ceil并乘以3600(整数).该分区必须是圆形/ ceil工作的浮点.
四舍五入的样本:
round($timestamp/3600)*3600
7:20 -> 7:00
7:40 -> 8:00
Run Code Online (Sandbox Code Playgroud)
地板样品:
floor($timestamp/3600)*3600
7:20 -> 7:00
7:40 -> 7:00
Run Code Online (Sandbox Code Playgroud)
天花板样本:
ceil($timestamp/3600)*3600
7:20 -> 8:00
7:40 -> 8:00
Run Code Online (Sandbox Code Playgroud)