輸出當前時間也為到來的以指定分鐘尾數結尾的的分鐘數,
如指定7 14:56:21->14:57:00
14:57:21->15:07:00
自己寫了一個感覺不夠簡單
<code>function get_minutes($dest){ $start1 =new DateTime(); $date = $start1 ->format('Y-m-d-H-i-s'); list($year,$mon,$day,$hour,$min,$sec) = explode('-',$date); $start2 = new DateTime($year.'-'.$mon.'-'.$day.' '.$hour.':'.$min); $needle = floor($min/10)*10 +$dest; $needle = $needle > $min ? $needle : $needle +10; $extra = $needle - $min; $timestr = '+ '.$extra.' minutes'; $start2->modify($timestr); return $start2->format('Y-m-d H:i:s'); } echo get_minutes(7);</code>
輸出當前時間也為到來的以指定分鐘尾數結尾的的分鐘數,
如指定7 14:56:21->14:57:00
14:57:21->15:07:00
自己寫了一個感覺不夠簡單
<code>function get_minutes($dest){ $start1 =new DateTime(); $date = $start1 ->format('Y-m-d-H-i-s'); list($year,$mon,$day,$hour,$min,$sec) = explode('-',$date); $start2 = new DateTime($year.'-'.$mon.'-'.$day.' '.$hour.':'.$min); $needle = floor($min/10)*10 +$dest; $needle = $needle > $min ? $needle : $needle +10; $extra = $needle - $min; $timestr = '+ '.$extra.' minutes'; $start2->modify($timestr); return $start2->format('Y-m-d H:i:s'); } echo get_minutes(7);</code>
先來分析一下需求,需要的分鐘分別是7分,10+7分,20+7分,30+7分,40+7分,50+7分;另外57分到下一個節點7分也是相差10分鐘。
因為格林威治時間1970年01月01日00時00分00秒起至現在的總秒數。
第一個7分是420秒,之後都是增加600秒。
需要補的秒數就是:先當前時間除以600的餘數,小於420就直接用420去減,大於就用600+420去減。
<code class="php">$time = time(); echo date('Y-m-d H:i:s',$time); $last = $time%600; $last = $last<420?420-$last:1020-$last; echo '<br />'; echo date('Y-m-d H:i:s',$time+$last);</code>
<code>function get_minutes($dest) { if ($dest >= 10) { throw new Exception('param error!'); } $mitute = date('i'); $unit = $mitute % 10;//个位分钟数 $offset = $dest - $unit; if ($dest <= $unit) { $offset += 10; } return date('Y-m-d H:i:00', strtotime('+' . $offset . ' minutes')); } echo get_minutes(7);</code>
好奇怪的需求..
我看你的代碼寫的有點複雜, 其實思路很簡單的.
就是看分鐘的個位數是不是大於7, 如果大於7, 就用17-個位數, 否則用7-個位數. 算出來的就是下個尾數為7的分鐘數與當前分鐘的差了.然後加上這個差不就行了?
<code class="php">$date = new DateTime(); $minute = $date->format('i'); $diff_minute = $minute[1] >= 7 ? (17 - $minute[1]) : (7 - $minute[1]); $date->add(new DateInterval("PT" . $diff_minute . 'M')); echo $date->format('Y-m-d H:i:s');</code>
給個例子, 為了方便, 把7硬編碼在裡面了. 根據你的需求改改就能用了.
<code><?php $dest = 7; $dest = $dest*60; $time = time() - $dest; $time = ceil($time/600)*600+$dest; echo $time; echo date("Y-m-d H:i:s",$time); ?></code>