我在这里看了其他答案,但他们似乎没有帮助我。
如果数据库中的时间是05:30,当前时间是05:59,我想将它回到05:30而不是06:00,但是一旦到达06:00,我想要它留在:00分钟,直到06:30。
这甚至有意义吗?就像把它缩小半个小时一样。
我正在尝试从其他网站上获取此代码,但它只执行:00分钟,它不会执行:30如果已过去:30分钟。
$hour = date('H');
$minute = (date('n')>30)?'30':'00';
$roundnow = "$hour:$minute";
谢谢。
答案 0 :(得分:2)
如果您使用一小时3600秒和半小时1800小时的事实,这是一个非常简单的操作。这允许我们使用时间戳模数1800来按时间舍入时间。
在处理日期和时间时,我总是使用DateTime classes,所以像这样的函数可以帮你完成工作: -
/**
* @param DateTime $dateTime The dateTime to be rounded
*
* @return DateTime The rounded DateTime
*/
function roundDateTime(\DateTime $dateTime)
{
$rounded = clone $dateTime; //Avoid side effects
$rounded->setTimestamp($rounded->getTimestamp() - $rounded->getTimestamp() % 1800);
return $rounded;
}
您can see it working here使用一些测试代码来证明它确实存在。