<?php
function getRoundedCutoff ($t) {
$dt = new DateTime( $t );
$sec = intval($dt->format('s'));
$msec = ( $sec > 30 ) ? '+'.(60-$sec) : '-'.$sec;
$dt->modify($msec.' seconds');
$rmin = intval($dt->format('i')) % 15;
$mmin = ( $rmin > 7 ) ? '+'.(15-$rmin) : '-'.$rmin;
$dt->modify($mmin.' minutes');
return $dt->format('H:i:s');
}
$times = array(
'10:52:00',
'10:52:59',
'10:53:00',
'10:50:00',
'10:50:14',
'10:50:59',
'10:50:45',
'01:12:00',
'01:05:00',
'01:58:00',
'01:58:59',
'01:59:59',
'01:01:00',
);
foreach ($times as $time) {
var_dump($time.' -> '.getRoundedCutoff($time));
}
preferences:
47.13 ms | 402 KiB | 5 Q