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
  1. <?php
  2. function get_time_on_clock($timestamp, $m_min = 25, $m_max = 35)
  3. {
  4. // Y-m-d H:i:s
  5. $minute = date('i', $timestamp);
  6. if ($minute > $m_max) {
  7. $timestamp += 3600; // add 1 hour
  8. $minute = 0;
  9. } else if ($minute < $m_min)
  10. $minute = 0;
  11. else // $m_min < $timestamp < $m_max
  12. $minute = 30;
  13. return strtotime(date('Y-m-d H:', $timestamp) . $minute . ':0');
  14. }
  15. // Test
  16. 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
  17. 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
  18. 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
  19. ?>

作者: Tsung

對新奇的事物都很有興趣, 喜歡簡單的東西, 過簡單的生活.

發表迴響

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