php - 四舍五入 PHP 时间戳

标签 php date time

将时间戳四舍五入到小时的好的解决方案是什么?

例如,在使用 date('d.m.y h:m', time()) 之后,我得到 '02.08.11 7:07'... 现在,从这里,我会喜欢有 7:00 的时间戳。

我怎样才能做到这一点?

最佳答案

更新

看到Greg Miller's "Time Programming Fundamentals" talk之后关于谷歌的 cctz C++ library ,我对我之前的回答不满意。

处理时间是一个非常复杂的话题(即使不考虑相对论效应)。我们必须尊重像 timezones with uneven offsets 这样的事情, daylight saving time , time jumps due to legislation changesleap seconds可能还有更多怪癖。 虽然其中许多仅在时间和空间上产生局部影响,但我们计划的用户仍然可能不幸受到影响。

长话短说

可能最好依赖像 holodoc's answer 中那样的底层函数处理时区管理的怪癖。

旧答案

如果我没记错的话,时间戳恰好从 0:00 1.1.1970 开始,所以将它除以 3600( float )然后取整/下限/上限并乘以 3600(整数)就足够了。除法必须是 float 才能使 round/ceil 起作用。

舍入示例:

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

地板 sample :

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

天花板示例:

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

关于php - 四舍五入 PHP 时间戳,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6916229/

相关文章:

php - MySQL 查询中的日期/时间错误

javascript - 获取当前时间 javascript + 1 小时(分钟错误)

php - 通过 ajax 将表格行作为 HTML 代码返回并添加到表格中

php - 如何从 Magento 系统配置中获取数据

sql - 如何在 SQL 中计算该月的最后一天?

SQL Access 2010 按日期查询 "Data type mismatch in criteria expression."

java - 如何在Java中获取当前日期前7天的日期

java - 如何检查毫秒时间戳是否在我当前时区的午夜?

javascript - 如何获取点击的行id值?

php - 如何在 PHP 中随机填充单个锦标赛淘汰而不重复?