在抓某些資料時, 在計算上會有時間誤差, 這時間誤差可能幾分鐘, 但是會造成計算後差上 1小時, 所以來作點規則整理.
PHP 依照時間距離 取整點
規則整理如下, 以 分來作計算, 35分 / 25分 為判斷基準 (秒數一律歸0)
時間差距
- 分 > 35 => 時 + 1 (分歸零), ex: 10:36 => 11:00
- 分 < 25 => 時 不變 (分歸零), ex: 10:20 => 10:00
- 25 ~ 35 => 時 不變 (分取30), ex: 10:27 => 10:30
<?php function get_time_on_clock($timestamp, $m_min = 25, $m_max = 35) { // Y-m-d H:i:s $minute = date('i', $timestamp); if ($minute > $m_max) { $timestamp += 3600; // add 1 hour $minute = 0; } else if ($minute < $m_min) $minute = 0; else // $m_min < $timestamp < $m_max $minute = 30; return strtotime(date('Y-m-d H:', $timestamp) . $minute . ':0'); } // Test echo date('Y-m-d H:i:s', get_time_on_clock(strtotime('2014-07-08 10:36:03'))); // 2014-07-08 11:00:00 echo date('Y-m-d H:i:s', get_time_on_clock(strtotime('2014-07-08 10:20:05'))); // 2014-07-08 10:00:00 echo date('Y-m-d H:i:s', get_time_on_clock(strtotime('2014-07-08 10:27:03'))); // 2014-07-08 10:30:00 ?>