首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >将php时间戳四舍五入为最接近的分钟

将php时间戳四舍五入为最接近的分钟
EN

Stack Overflow用户
提问于 2010-03-03 00:11:52
回答 3查看 30.2K关注 0票数 22

假设我在PHP中有一个unix时间戳。如何将我的php时间戳舍入到最接近的分钟?例如,16:45:00而不是16:45:34?

感谢您的帮助!:)

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-03-03 00:16:45

如果时间戳是Unix样式的时间戳,则只需

代码语言:javascript
复制
$rounded = round($time/60)*60;

如果它是您指定的样式,您可以简单地将其转换为Unix样式的时间戳,然后再转换回来。

代码语言:javascript
复制
$rounded = date('H:i:s', round(strtotime('16:45:34')/60)*60);

使用round()作为一种简单的方法来确保在x - 0.5 <= x < x + 0.5之间的值舍入为x。如果您总是想要总是四舍五入(如上所述),您可以使用floor()或模函数

代码语言:javascript
复制
$rounded = floor($time/60)*60;
//or
$rounded = time() - time() % 60;
票数 62
EN

Stack Overflow用户

发布于 2011-09-23 19:31:48

另一种方法是:

代码语言:javascript
复制
$t = time();
$t -= $t % 60;
echo $t;

我读到过,在PHP中对time()的每次调用都必须通过堆栈返回到操作系统。我不知道这在5.3+中有没有改变?上面的代码减少了对time()的调用...

基准代码:

代码语言:javascript
复制
$ php -r '$s = microtime(TRUE); for ($i = 0; $i < 10000000; $i++); $t = time(); $t -= $t %60; $e = microtime(TRUE); echo $e - $s . "\n\n";'

$ php -r '$s = microtime(TRUE); for ($i = 0; $i < 10000000; $i++); $t = time() - time() % 60; $e = microtime(TRUE); echo $e - $s . "\n\n";'

$ php -r '$s = microtime(TRUE); for ($i = 0; $i < 10000000; $i++); $t = floor(time() / 60) * 60; $e = microtime(TRUE); echo $e - $s . "\n\n";'

有趣的是,超过1000,000,000次迭代所有三个实际上做了相同的时间;)

票数 6
EN

Stack Overflow用户

发布于 2010-03-03 00:25:14

啊,天啊。比我早一步:)

这也是我的解决方案。

代码语言:javascript
复制
<?php 
$round = ( round ( time() / 60 ) * 60 );

echo date('h:i:s A', $round );
?>

http://php.net/manual/en/function.time.php

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2364625

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档