在印度,如果我通過php date(),mysql NOW()和timestamp在三列中節省時間在2017-05-09 10:12:21左右。所以它產生結果將服務器時間轉換爲當地時間
date() NOW() timestamp
2017-05-09 04:38:37 | 2017-05-08 22:38:37 | 2017-05-08 22:38:37
現在我想根據全球用戶時區將此時間轉換爲當地時間。我怎麼能做到這一點。請原諒我在PHP新的任何錯誤。
在印度,如果我通過php date(),mysql NOW()和timestamp在三列中節省時間在2017-05-09 10:12:21左右。所以它產生結果將服務器時間轉換爲當地時間
date() NOW() timestamp
2017-05-09 04:38:37 | 2017-05-08 22:38:37 | 2017-05-08 22:38:37
現在我想根據全球用戶時區將此時間轉換爲當地時間。我怎麼能做到這一點。請原諒我在PHP新的任何錯誤。
$date = new DateTime($yourTimestamp, new DateTimeZone($timezone));
echo $date->format('Y-m-d H:i:sP');
凡$yourTimestamp
爲本地時間的時間戳,以及$timezone
是要時間戳轉換成時區。
據this,如果你的MySQL列TIMESTAMP
類型,日期時間存儲在UTC:它將從本地時區,而插入和檢索轉換。
要檢查什麼MySQL的默認時區爲,試試這個:
SELECT @@system_time_zone;
PHP的date
函數返回從當前Unix時間戳格式的日期字符串。它將使用當前的默認時區來格式化時間戳。你可以利用這個得到默認的時區:
echo date_default_timezone_get();
從我從你的問題的例子瞭解,這兩個時區必須是不同的,或者他們會表現出同樣的時間。
我認爲標準做法是將所有默認時區設置爲UTC,並根據請求的來源將它們轉換爲本地時區。這樣做並不像看起來那麼直截了當,因爲時區不是HTTP規範的一部分,但這可以幫助你:How to detect user's timezone?。
如果您只是想將當前時區中的所有內容都存儲起來,並確信用戶不會介意,則可以將php和mysql中的默認時區更改爲當地時區。
的MySQL:How do I set the time zone of MySQL?
PHP:http://php.net/manual/en/function.date-default-timezone-set.php