PHP 日期时间四舍五入到最接近的 10 分钟
我正在从mysql字段中检索日期时间,但我需要将其四舍五入到最接近的10分钟。
例如,如果日期时间是 2013-11-06 14:00:01,我想将时间返回为 6/11/2013 14:10。
最简单的方法是什么?
$datetime = new DateTime($mysqldata);
echo $datetime->format('d/m/Y G:i');
任何建议都值得赞赏。
谢谢。
我正在从mysql字段中检索日期时间,但我需要将其四舍五入到最接近的10分钟。
例如,如果日期时间是 2013-11-06 14:00:01,我想将时间返回为 6/11/2013 14:10。
最简单的方法是什么?
$datetime = new DateTime($mysqldata);
echo $datetime->format('d/m/Y G:i');
任何建议都值得赞赏。
谢谢。
1) 如有必要,将秒数设置为 0(通过向上舍入到最接近的分钟)
$second = $datetime->format("s");
if($second > 0)
$datetime->add(new DateInterval("PT".(60-$second)."S"));
2) 获取分钟数
$minute = $datetime->format("i");
3) 转换模数 10
$minute = $minute % 10;
4)如有必要,计算分钟到下一个10分钟
if($minute != 0)
{
// Count difference
$diff = 10 - $minute;
// Add difference
$datetime->add(new DateInterval("PT".$diff."M"));
}
编辑,感谢@Ondrej Henek和@berturion
我偶然发现了这个问题,并想知道为什么所有的解决方案都如此复杂。它很简单:
function roundToNext10Min(\DateTime $dt, $precision = 10) {
$s = $precision * 60;
$dt->setTimestamp($s * (int) ceil($dt->getTimestamp() / $s));
return $dt;
}
$dt = roundToNext10Min(new DateTime($str));
echo $dt->format('d/m/Y G:i');