格式字符P I有UTC時間根據15:00:00創建時間在PHP
時區UTC偏移量是+03:00
,當我試圖使用UTC時間來創建新的時間+ utc偏移量,它顯示12:00:00。
但我需要的時間是18:00:00
請給我建議。
$UTC_offset="+03:00";
date("d M, Y h:i A", strtotime("15:00:00 ".$UTC_offset))
格式字符P I有UTC時間根據15:00:00創建時間在PHP
時區UTC偏移量是+03:00
,當我試圖使用UTC時間來創建新的時間+ utc偏移量,它顯示12:00:00。
但我需要的時間是18:00:00
請給我建議。
$UTC_offset="+03:00";
date("d M, Y h:i A", strtotime("15:00:00 ".$UTC_offset))
正如評論者Marc B.指出的那樣,減去偏移量而不是增加偏移量。對於一個建議,看看在PHP手冊PHP: Date/Time Functions,並可能考慮設置一個默認時區(而不是手動修改)與date_default_time_zone_get和...設置。有很多潛在的追求途徑。
如果你想客戶當地的時間,一個簡單的方法是使用客戶端的javacript。查看SO問題How can I get the user's local time instead of the server's time?
但我有來自許多國家的客戶。所以默認的時區設置爲UTC和基於客戶的UTC偏差從數據庫中取得,最後在客戶的發票上顯示客戶操作時間 –
您發佈的代碼分析字符串'15:00:00 +03:00
。
用簡單的英語,這個字符串的意思是「當地時間是15:00(下午3點),我位於GMT/UTC東部3小時的時區」。相應的UTC時間是12:00
。
恰巧你的PHP的默認時區設置爲UTC(我猜這是php.ini
的默認值,你沒有改變它)。這就是爲什麼date()
打印07 Sep, 2016 12:00 PM
。
對我來說,你的代碼打印07 Sep, 2016 03:00 PM
,因爲我也在UTC+3
的時區,我的php.ini
使用它作爲默認值。
不要使用date()
(或任何日期/時間函數)。其中一些人對時區不瞭解,其他人只在當地時間工作。
改爲使用DateTime
類。他們可以處理時區,代碼更短,更清晰。
你的具體問題是很容易解決:
// Parse the input time in the UTC timezone
$date = new DateTime("15:00:00", new DateTimeZone("UTC"));
// Change the timezone to local
$date->setTimeZone(new DateTimeZone("+03:00"));
// Output the local time
echo($date->format("d M, Y h:i A"));
它顯示:
07 Sep, 2016 06:00 PM
瞭解更多關於DateTime
,DateTimeZone
,DateTimeInterval
和其他的DateTime類。它們是用PHP處理日期&時間的現代方式。
謝謝你的回答axiac –
顯示你現在如何做。 – aynber
這就是應該發生的事情。 UTC + 3是utc時間的3小時,這意味着你減少了時間。例如下午3點在格林威治英格蘭意味着utc + 3時區(東美)是下午12點。 –
但我所需的時區是亞洲/卡塔爾。 –