PHP回合时间为:00或:30

时间:2014-05-08 16:42:47

标签: php date time

我在这里看了其他答案,但他们似乎没有帮助我。

如果数据库中的时间是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";

谢谢。

1 个答案:

答案 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使用一些测试代码来证明它确实存在。