2012-06-15 75 views
0
echo date('H:i', time()); // 10:15  
echo date('H:i', strtotime($this->deadline)); // 10:05 
$delay = time() - strtotime($this->deadline); 
echo date('H:i', $delay); // 02:10 

爲什麼delay爲2小時10分鐘而不是10分鐘?在php中減去時間。奇怪的結果

我認爲它是與時區。現在是歐洲/赫爾辛基。但是我怎樣才能得到兩個時間戳之間的絕對差異?

編輯

echo time(); // 1339745334 
echo strtotime($this->deadline); // 1339657500 
+0

還張貼你的時間()和的strtotime($這個 - >截止日期)獲得的時間戳值。 –

+0

更新我的帖子 – sevenWonders

回答

1

$延遲實際上不是一個正確的時間戳。這只是兩個時間戳之間的差異,它可能低至1. mktime()函數在這裏可能很有用。

+2

我不明白爲什麼人們總是試圖2個時間戳......時間1之間約會減法的結果 - 時間2 = numberOfSeconds ...如果你想在分鐘或小時/ 60/3600 – PEM

+0

如何我會在這裏使用mktime()? – sevenWonders

+0

@sevenWonders:這裏的,如果你不想從頭開始做一個例子:http://www.if-not-true-then-false.com/2010/php-calculate-real-differences-between-two -dates或 - 時間戳/ –

0

如果你想顯示實時,您將需要格式化時間accourding的差異試試這個代碼

date_diff($time_start, $time_ends); 

function date_diff($d1, $d2){ 
     $d1 = (is_string($d1) ? strtotime($d1) : $d1); 
     $d2 = (is_string($d2) ? strtotime($d2) : $d2); 
     $diff_secs = abs($d1 - $d2); 
     $base_year = min(date("Y", $d1), date("Y", $d2)); 
     $diff = mktime(0, 0, $diff_secs, 1, 1, $base_year); 
     return array(
      "years" => date("Y", $diff) - $base_year, 
      "months_total" => (date("Y", $diff) - $base_year) * 12 + date("n", $diff) - 1, 
      "months" => date("n", $diff) - 1, 
      "days_total" => floor($diff_secs/(3600 * 24)), 
      "days" => date("j", $diff) - 1, 
      "hours_total" => floor($diff_secs/3600), 
      "hours" => date("G", $diff), 
      "minutes_total" => floor($diff_secs/60), 
      "minutes" => (int) date("i", $diff), 
      "seconds_total" => $diff_secs, 
      "seconds" => (int) date("s", $diff) 
     ); 
    } 
+0

$ time_ends是$這 - >期限和$ TIME_START是當前時間 – vicky

0

。在這裏,你可以延伸你一個例子功能祝願:

function time_diff($format,$seperator,$delay){ 

    $days = floor($delay/86400); 
    $hours = floor(($delay%86400)/3600); 
    $mins = floor(($delay%3600)/60); 
    $secs = floor(($delay%60)); 

    $format = explode($seperator,$format); 
    $return = ""; 

    foreach($format as $value){ 

     if(strlen($return) > 0){ 
      $return .= $seperator; 
     } 

     switch($value){ 
      case 'H':{ 
       $return .= $hours; 
       break; 
      } 
      case 'i':{ 
       $return .= $mins; 
       break; 
      } 
      case 'z':{ 
       $return .= $days; 
       break; 
      } 
      case 's':{ 
       $return .= $secs; 
       break; 
      } 
     } 

     return $return;      
    } 

用法:function_time_diff("H:i",':',$delay) =>您的延遲格式化。