舍入PHP时间戳

luq*_*ita 4 php time date

什么是将时间戳围绕到小时的好解决方案?

例如,在使用之后date('d.m.y h:m', time()),我得到'02 .08.11 7:07'...现在,从这里开始,我希望时间戳为7:00.

我怎样才能做到这一点?

Nob*_*ody 14

更新

在看到Greg Miller的"Time Programming Fundamentals"谈到 Google的cctz C++库之后,我对之前的回答感到不满.

处理时间是一个非常复杂的主题(即使折扣相对论效应).我们必须尊重具有不均匀偏移的时区,夏令时, 由于立法变化闰秒导致的时间跳跃以及可能更多的怪癖.虽然其中许多只在时间和空间上产生局部影响,但我们程序的用户仍然不幸受到影响.

TL; DR

最好依靠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)