我一直在使用DATETIME列將用戶消息存儲在我的數據庫中。我需要將消息的發送時間顯示給不同國家的用戶,因爲數據庫使用GMT + 0我需要將檢索到的時間調整到用戶的時區。獲取時區GMT時間?
當前用戶的時區已設置爲date_default_timezone_set()如何獲取GMT +時間?
編輯
繼的想法@doniyor這是我做過什麼:
// Get server hour
$localtime = localtime();
$serverHour = $localtime[2]; # The server's timezone is used by default before defining one
// Set timezone
date_default_timezone_set('user's timezone goes here');
// Get user hour
$localtime = localtime(); # Now localtime gives the user's time since timezone has been changed
$userHour = $localtime[2];
$timeAdjustment = $userHour - $serverHour < -12 ? 24 + $userHour - $serverHour : $userHour - $serverHour; // Calculate hours to add to rows got from db to match user's time
// Example of a row adjusted to match user's time
$adjustTime = ($userHour - $serverHour < -12 ? 24 + $userHour - $serverHour : ($userHour - $serverHour > 12 ? $userHour - $serverHour - 24 : $userHour - $serverHour)*60*60; // strtotime is in seconds so $timeAdjustment needs *60*60 to convert to seconds too
我測試過這在PHP5 + Apache的,但可能的結果取決於服務器的配置。
嘗試使用Unix的時間戳,然後將其轉換爲日期 – Andrew
它使用的只是網頁建立日期時間,所以可能如果我改變時間戳我會得到很多錯誤 – lisovaccaro