假设我有一个 PHP 中的 UNIX 时间戳。如何将 PHP 时间戳四舍五入到最近的一分钟?例如,将 16:45:34 转换成 16:45:00?
感谢您的帮助!:)
假设我有一个 PHP 中的 UNIX 时间戳。如何将 PHP 时间戳四舍五入到最近的一分钟?例如,将 16:45:34 转换成 16:45:00?
感谢您的帮助!:)
如果时间戳是一个Unix风格的时间戳,那么只需
$rounded = round($time/60)*60;
如果是您所指示的样式,您可以将其简单地转换为Unix样式时间戳,然后再转回来。
$rounded = date('H:i:s', round(strtotime('16:45:34')/60)*60);
round()
函数通常用于简单地保证在取值范围x - 0.5 <= x < x + 0.5
时向x
四舍五入。如果您总是想向下取整(如所示),可以使用floor()
函数或模运算。
$rounded = floor($time/60)*60;
//or
$rounded = time() - time() % 60;
$t = time();
$t -= $t % 60;
echo $t;
time()
,都需要通过整个栈返回到操作系统。但我不知道 5.3+ 版本是否有所改变。上面的代码可以减少对 time() 的调用...$ 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";'
啊,太快了,你抢先一步 :)
这也是我的解决方案。
<?php
$round = ( round ( time() / 60 ) * 60 );
echo date('h:i:s A', $round );
?>
只需使用以下代码:
$last_hour = date('Y-m-d H:00:00') // to last hour;
$last_minute = date('Y-m-d H:i:00') // to last minute;
// clean expired shopping carts
function shop_clean_carts($grace = 5) {
$expiry = date('Y-m-d H:i:00', strtotime("-$grace minutes"));
$q = "DELETE FROM `shop__cart`
WHERE `expiry` < '$expiry'
AND `expiry` IS NOT NULL
AND `fk_order_id` IS NULL";
$db->query($q);
return;
}