如何在PHP中将日期时间四舍五入到最接近的10或5分钟

本文概述

  • 四舍五入到最接近的间隔
  • 四舍五入到最大间隔
  • 四舍五入到最低间隔
在某些应用程序中, 对于具有标准化方法的要求苛刻的应用程序, 将DateTime对象存储在数据库中是绝对的技术。但是, 从哪个意义上说呢?它们需要以某种特定的格式存储, 关心准确性和严格性。让我们以调度程序应用程序为例, 该应用程序以5分钟为间隔显示事件, 此日历仅接受5:25、6:45等格式的事件时间。如果显示了其他时间, 则日历将失败, 因此由服务器端提供正确的时间格式。使用PHP的DateTime类可以很容易地修改日期, 但是将DateTime对象的时间舍入某个时间间隔(例如5或10分钟)不是很直观。
在本文中, 我们将与你分享3种方法, 这些方法将帮助你轻松地将DateTime对象的时间四舍五入到最接近的时间间隔(最高或最低)。
注意这三种方法默认都以10分钟为间隔, 你可以根据需要更改它, 例如5、20等。只需将间隔更改为函数的第二个参数即可!
四舍五入到最接近的间隔以下函数将日期时间对象的分钟四舍五入到最接近的给定间隔:
< ?php /** * Round minutes to the nearest interval of a DateTime object. * * @param \DateTime $dateTime * @param int $minuteInterval * @return \DateTime */public function roundToNearestMinuteInterval(\DateTime $dateTime, $minuteInterval = 10){return $dateTime-> setTime($dateTime-> format('H'), round($dateTime-> format('i') / $minuteInterval) * $minuteInterval, 0); }

可以这样使用:
< ?php $date = new DateTime("2018-06-27 20:37:00"); $date = roundToNearestMinuteInterval($date); // Rounded from 37 minutes to 40//2018-06-27 20:40:00echo $date-> format("Y-m-d H:i:s");

或者, 如果datetime对象的分钟数小于最大间隔, 则使用较小的间隔:
< ?php $date = new DateTime("2018-06-27 20:33:00"); $date = roundToNearestMinuteInterval($date); // Rounded from 33 minutes to 30//2018-06-27 20:30:00echo $date-> format("Y-m-d H:i:s");

四舍五入到最大间隔以下函数将日期时间对象的分钟四舍五入到给定的最大间隔:
< ?php /** * Round up minutes to the nearest upper interval of a DateTime object. * * @param \DateTime $dateTime * @param int $minuteInterval * @return \DateTime */public function roundUpToMinuteInterval(\DateTime $dateTime, $minuteInterval = 10){return $dateTime-> setTime($dateTime-> format('H'), ceil($dateTime-> format('i') / $minuteInterval) * $minuteInterval, 0); }

可以这样使用:
< ?php $date = new DateTime("2018-06-27 20:37:00"); $date = roundUpToMinuteInterval($date); // Rounded from 37 minutes to 40//2018-06-27 20:40:00echo $date-> format("Y-m-d H:i:s");

四舍五入到最低间隔以下函数将日期时间对象的分钟四舍五入到给定的最小间隔:
< ?php/** * Round down minutes to the nearest lower interval of a DateTime object. * * @param \DateTime $dateTime * @param int $minuteInterval * @return \DateTime */public function roundDownToMinuteInterval(\DateTime $dateTime, $minuteInterval = 10){return $dateTime-> setTime($dateTime-> format('H'), floor($dateTime-> format('i') / $minuteInterval) * $minuteInterval, 0); }

可以这样使用:
< ?php $date = new DateTime("2018-06-27 20:33:00"); $date = roundDownToMinuteInterval($date); // Rounded from 33 minutes to 30//2018-06-27 20:30:00echo $date-> format("Y-m-d H:i:s");

【如何在PHP中将日期时间四舍五入到最接近的10或5分钟】编码愉快!

    推荐阅读