PHP 依照時間距離 取整點

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

關於「Tsung」

對新奇的事物都很有興趣, 喜歡簡單的東西, 過簡單的生活.
分類: Programming,標籤: , , 。這篇內容的永久連結

發表迴響

這個網站採用 Akismet 服務減少垃圾留言。進一步瞭解 Akismet 如何處理網站訪客的留言資料