四舍五入PHP时间戳

四舍五入PHP时间戳,php,date,time,Php,Date,Time,将时间戳四舍五入到小时是什么好的解决方案 例如,在使用date('d.m.y h:m',time())之后,我得到'02.08.11 7:07'。。。现在,从这里,我想知道7点的时间戳 我怎样才能做到这一点 将小时和分钟捕获到两个不同的变量中。如果分钟数>=30,则在小时数上加一分钟 这不是最优雅的解决方案,但它很有效。:) 有没有想过删除会议记录?:) 如果您需要开始分钟的时间戳,只需稍微更改数据参数并使用 更新 看到谷歌的后,我对我之前的回答感到不满 处理时间是一个非常复杂的话题(即使不考虑

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

例如,在使用
date('d.m.y h:m',time())
之后,我得到'02.08.11 7:07'。。。现在,从这里,我想知道7点的时间戳


我怎样才能做到这一点

将小时和分钟捕获到两个不同的变量中。如果分钟数>=30,则在小时数上加一分钟


这不是最优雅的解决方案,但它很有效。:)

有没有想过删除会议记录?:)

如果您需要开始分钟的时间戳,只需稍微更改
数据
参数并使用

更新 看到谷歌的后,我对我之前的回答感到不满

处理时间是一个非常复杂的话题(即使不考虑相对论效应)。我们必须尊重这样的事情,或者可能还有更多的怪癖。 虽然其中许多在时间和空间上只具有局部效应,但我们程序的用户仍然可能不幸地受到影响

TL;博士 也许最好依靠中这样的底层函数来处理时区管理的怪癖

旧答案 当我记得正确的时候,时间戳正好从1970年1月1日0:00开始,所以它应该足以除以3600(浮动),然后取整/地板/天花板,再乘以3600(整数)。除法必须是浮点,round/ceil才能工作

四舍五入示例:

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
最简单的解决方案:

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

这是非常罕见的看到任何形式的时间戳,其中小时是四舍五入。如果时间戳上写着7:00,这意味着它发生在第7个小时,任何时候。如果你开始收集时间戳,人们会认为它发生在第8小时的任何时间。。。这可能会导致混乱。

您是根据现在的时间进行上下取整,还是希望每次都有00?每次只有00。。。我只需要一个函数,它可以为任何输入的时间戳获取00分钟的时间戳。这也是我想知道的。你只是在工作时间上加了天花板/地板,还是想把时间安排得更圆一些?你能提供更多的例子吗?时间
7:50
如果变成
7:00
8:00
,会发生什么情况?其实没关系,可能是7:00或8:00如果时间是7:32,必须是8:00而不是7:00。这不是他/她在对原始帖子的进一步评论中要求的。格式化时间戳,然后再次解析回时间戳非常讨厌。更好地在时间戳本身上执行算术。不管是否令人讨厌,当所有必需的函数都已经是语言的一部分时,它消除了使用算术的需要。更不用说请求中的进一步更改更容易通过date参数实现,date参数很容易更改。+1智能技巧,但它需要了解时间戳中的时间是如何存储的。我会黑盒这个功能(也就是说,把它放在一个函数:)中,所以这个智能并不是到处都是你需要舍入小时的地方。当然,这个转换应该只写一次。此外,将时间间隔(捕捉到小时,15分钟…)传递给函数也可以使其更通用。它不起作用,您的意思是:(round($timeHours/3600)*3600)?在round中查找值。可以是执行整数除法there@holodoc“我只需要一个函数,可以为任何输入的时间戳获取00分钟时间戳”对我来说听起来更像“地板”。问题中给出的例子证实了这一点。你真的在读OP要求的东西吗?此外,逻辑保持不变,只需用trunc或和int cast替换round。
ceil($timestamp/3600)*3600
7:20 -> 8:00
7:40 -> 8:00
date('d.m.y h', time());