在抓某些資料時, 在計算上會有時間誤差, 這時間誤差可能幾分鐘, 但是會造成計算後差上 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;
- }
- // 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
- ?>