簡體   English   中英

PHP date_create函數,使用時區縮寫將UTC時間轉換為不同的時區

[英]PHP date_create function, converting UTC time to different timezone using the timezone abbrev

$placename=timezone_name_from_abbr("", $timezone * 3600, false);
                        $date = date_create($list['stamp'], timezone_open($placename));
                        $datetimezone=new DateTimeZone('Europe/London');
                        $dateTime = new DateTime($list['stamp'],$datetimezone); 
                        $dateTime->setTimeZone(new DateTimeZone($placename)); 

編輯

我嘗試了以下代碼建議作為答案,它產生了一個時間,它本應該是2小時。 我檢查了我的數據庫,數據庫中的時間與GMT匹配。 所以問題在於使用轉換從GMT轉換它

$timezone=-4

來自用戶的代碼回答,下面產生兩個小時的時間。 從GMT轉換到America / New_York,但它慢了兩個小時。 我檢查了placename變量以確保它是America / New_York。 可能是什么導致了這個?

$placename=timezone_name_from_abbr("", $timezone * 3600, true);
$dateTime = new DateTime($list['stamp']); 
$dateTime->setTimeZone(new DateTimeZone($placename)); 
echo $dateTime->format('F d g:i a'); 

原始問題

而不是將其轉換為America / New_York時間,這產生了我存儲在我的數據庫中的UTC時間,為什么這樣,為什么它沒有轉換時間? 它存儲在db中2012-05-13 07:30:47

$placename=timezone_name_from_abbr("", $timezone * 3600, true);
$date = date_create($list['stamp'], timezone_open($placename));
echo date_format($date, 'F d g:i a');
$dateTime = new DateTime($date,new DateTimeZone('Europe/London')); 
$dateTime->setTimeZone(new DateTimeZone('America/New_York')); 
echo $dateTime->format('F d g:i a'); 

請注意,我在創建DateTime對象時添加了第二個參數,以確保它知道我傳遞的是GMT時間,其他方式它將假設其服務器本地時間並可能最終得到不同的結果。

到沒有引號的第一個版本。

順便說一句,你在(在你的代碼上)分配一個沒有引號的字符串,這可能會或可能不會導致錯誤,因為PHP將嘗試尋找一個名為America的常量並將其除以常量名New_York但我是假設那不是你想要的。

如果您發現所有警告/通知/錯誤,您會看到以下內容:

Notice: Use of undefined constant America - assumed 'America' in line 3;

其中,如果你想考慮它最終會返回一個實際的警告(前兩個是通知)告訴你你的潛水為零。 從某種意義上講,PHP是危險的,它可以讓你做各種瘋狂的事情而不會明顯地破壞任何東西。 不要誤會我的意思,我喜歡PHP,你最初需要小心。

我給你的代碼工作:)

如果你沒有在創建時指定時區(作為構造函數的第二個參數),它將假設時區是你當前的時區(服務器一個),你可以通過將GMT一個傳遞到那里或者你的任何東西來覆蓋它。 ve存儲在數據庫中。

但是,文檔中有一條警告說:注意:

當$ time參數是UNIX時間戳(例如@ 946684800)或指定時區(例如2010-01-28T15:00:00 + 02:00)時,將忽略$ timezone參數和當前時區。

文件

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM