2013-04-30 78 views
0

我使用Highcharts庫創建一些漂亮的報告。獲取unix時間值與現在之間的小時數

我有一個unix時間值的集合,我需要將它們轉換爲該日期和「Now」之間的小時數。

series: [{ 
    name: 'Fecha/Hora de Acceso', 
    // Outputs: 2382374734 (a unix time) 
    data: [<?php foreach($tutores as $t) echo $t['lastlogin'] . ','; ?>] 
}] 

有沒有簡單的方法來使用PHP來做到這一點?我正在尋找一個像34的值。不是34 Hours

回答

4

使用PHP time()函數3600進行比較,並劃分結果得到的小時

http://www.php.net/manual/en/function.time.php

<?php foreach($tutores as $t) { 
    echo floor((time() - $t['lastlogin'])/3600) . ','; 
} ?> 

編輯的區別:在示例中更新爲使​​用floor()。也可以使用ROUND()或者別的什麼,只要你想

+0

這工作,但返回很多小數位。我怎麼才能讓它返回'34'而不是'34.203611111'。 – sergserg 2013-04-30 13:56:26

+0

'floor()'或'round()'取決於你需要的舍入風格。 – mcrumley 2013-04-30 13:59:04

+0

啊,感謝@mcrumley,我會更新我的例子現在 – nealio82 2013-04-30 14:51:04

1

這應做到:

$datetime1 = new DateTime(); 
$datetime2 = new DateTime('@'.$t['lastlogin']); 
$interval = $datetime1->diff($datetime2); 
echo $interval->format('%h'); 
+0

約翰我有一個問題:你有這段代碼準備在一個txt文件,只需複製粘貼它,只要你找到這樣的問題? – HamZa 2013-04-30 13:50:11

+1

我實際上有一個未發佈的博客文章,用於使用DateTime和我經常參考的相關類。在某個時候,我會開始發佈它。 :) – 2013-04-30 13:51:16

+0

「未捕獲的異常‘異常’有消息「日期時間:: __結構():無法解析的時間字符串(2382374734)」要通過UNIX時間戳你有一個''@符號前面加上時間戳DateTime的構造函數。 – feeela 2013-04-30 13:52:59

0

結果格式是的,你可以DateTime::diff()http://php.net/datetime.diff

$input = 2382374734; 

$old = new DateTime('@' . $input); 
$diff = $old->diff(new DateTime()); 

echo sprintf('%d is %d hours ago', $input, $diff->format('%h')); 
+1

DateInterval門店的差異分爲天,小時,等於是個小時是不是總小時,它的時間減去幾天後剩餘。請參閱http://eval.in/18321 – mcrumley 2013-04-30 14:07:54