2010-10-18 75 views
1

如何使用PHP從較新的日期中減去舊日期2010-10-18 07:44:53PHP - 如何從較新的日期減去較舊的日期?

+0

可能重複的[如何計算日期之間的差異使用php](http://stackoverflow.com/questions/676824/how-to-calculate-the-date-difference-between-2-dates-使用-php) – Gordon 2010-10-19 08:43:18

回答

0

date_diff

http://php.net/manual/en/function.date-diff.php

如果您正在使用datetime對象的方法爲DIFF

+0

PHP> = 5.3.0只有 – Spilarix 2010-10-18 15:52:20

+0

有沒有另一種方式? – HELP 2010-10-18 15:53:59

+0

有關替代方法,請參考此問題的答案:http://stackoverflow.com/questions/676824/how-to-calculate-the-date-difference-between-2-dates-using-php – doppelgreener 2010-10-18 15:54:17

1

我會建議使用時間戳工作。從另一個減去一個,差異是秒,然後簡單的邏輯將其轉換爲分鐘/小時/天等。

可以使用 datestrtotimemktime獲得時間戳

0

接聽樣的問題取決於你想要什麼樣的返回值。秒?分鐘?這裏有一個簡單的功能,你可以嘗試在任何你想要的形式來獲取值:

<?php 
define('SUBDATES_SECS', 0); 
define('SUBDATES_MINS', 1); 
define('SUBDATES_HOURS', 2); 
define('SUBDATES_DAYS', 3); 
define('SUBDATES_WEEKS', 4); 
define('SUBDATES_MONTHS', 5); 
define('SUBDATES_YEARS', 6); 
function sub_dates($older, $newer, $ret = SUBDATES_SECS) { 
    $older = (is_numeric($older)) ? $older : strtotime($older); 
    $newer = (is_numeric($newer)) ? $newer : strtotime($newer); 

    $result = $newer - $older; 
    switch($ret) { 
     case SUBDATES_MINS: 
      $result /= 60; 
      break; 
     case SUBDATES_HOURS: 
      $result /= 120; 
      break; 
     case SUBDATES_DAYS: 
      $result /= 86400; 
      break; 
     case SUBDATES_WEEKS: 
      $result /= 604800 ; 
      break; 
     case SUBDATES_MONTHS: 
      $result /= 2629743; 
      break; 
     case SUBDATES_YEARS: 
      $result /= 31556926; 
      break; 
    } 

    return $result; 
} 

使用它:

<?php 
$older = time(); 
sleep(3); 
$newer = time(); 
echo sub_dates($older, $newer); 
// Returns 3 

echo sub_dates($older, $newer, SUBDATES_MINS); 
// Returns 0.05 

echo sub_dates('2010-04-19 01:01:00', '2010-04-19 01:02:00', SUBDATES_MINS); 
// Returns 1 

這是相當未經測試,但!