2011-06-12 37 views
1

我有一個時間字符串,它看起來像這樣PHP *小時前

2011-06-11T08:51:51Z 

我不知道這個時候的格式是什麼,但我知道這不是徒有其表。有人能幫助我將其轉換爲「前*小時」格式

+1

僅供參考,這種格式的正式名稱爲[ISO 8601](HTTP:// EN .wikipedia.org /維基/ ISO_8601)。的 – seriousdev 2011-06-12 08:34:15

+0

可能重複的[計算並示出了日期爲「秒前」,「分鐘前」等「前小時」](http://stackoverflow.com/questions/2452010/calculating-and-showing-a-date- AS-秒同期-分鐘,前-小時前-等) – Gordon 2011-06-12 09:31:55

回答

3
$tstamp = strtotime('2011-06-11T08:51:51Z'); 

會給你的時間戳,計算的時間一樣,數:

$hours = floor((time() - $stamp())/3600); 
+0

@freddy K.是Z來源於ISO8601我相信。這意味着它的UTC時間... – Nobita 2011-06-12 07:46:22

+0

Z指定祖魯時間(即UTC)。 http://en.wikipedia.org/wiki/Coordinated_Universal_Time – 2011-06-12 07:46:41

+0

乾杯,更新了答案。 – konsolenfreddy 2011-06-12 07:48:23

0

你需要做的第一件事是將其轉換成一個數字(的strtotime()),然後把它比作當前時間(時間()),最後分結果是3600(一小時內的秒數)。

0

我這樣做:

  1. 獲得該字符串的時間戳:$timestamp = strtotime($time_to_convert);
  2. 獲取實際的時間戳:$actual_timestamp = time();
  3. 。減去:$dif_timestampm = $actual_timestamp - $timestamp;
  4. 它傳遞到小時:$hours = $dif_timestampm/3600;
3

在PHP 5.3中,可以使用DateInterval

$date = new DateTime('2011-06-11T08:51:51Z'); 
$now = new DateTime(); 
$diff = $now->diff($date); 
echo $diff->format('h');