舍入PHP时间戳

什么是一个很好的解决方案来将时间戳记到一小时?

例如,在使用date('dmy h:m', time()) ,我得到了'02 .08.11 7:07'......现在,我想从这里获得7:00的时间戳。

我怎样才能做到这一点?


更新

在看到格雷格米勒的“时间编程基础”讨论谷歌的cctz C ++库之后,我对之前的回答感到不满。

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

TL; DR

最好是依靠像holodoc的答案那样的基础功能来处理时区管理的怪癖。

旧答案

当我没有记错的时间戳是从1970年1月1日0:00开始的,所以它应该足以将它除以3600(浮动),然后是round / floor / ceil并乘以3600(整数)。 该部门必须是全天候/小时工作的浮点。

舍入示例:

round($timestamp/3600)*3600
7:20 -> 7:00
7:40 -> 8:00

地板样品:

floor($timestamp/3600)*3600
7:20 -> 7:00
7:40 -> 7:00

天花板样品:

ceil($timestamp/3600)*3600
7:20 -> 8:00
7:40 -> 8:00

曾想过取消会议纪要? :)

echo date('d.m.y h:00', time());

如果你需要开始分钟的时间戳记只是改变你的data论证了一下,使用的strtotime。

echo strtotime(date('d.m.Y H:00:00', time()));

将小时和分钟捕捉成2个不同的变量。 如果分钟大于等于30,则在小时内加1。

不是最优雅的解决方案,但它的工作原理。 :)

链接地址: http://www.djcxy.com/p/3063.html

上一篇: Rounding PHP timestamp

下一篇: Integer difference in python between two dates