2011-02-23 125 views
1

例如,我在這個格式及其UTC偏移有個約會時間是+3:給定UTC偏移量和日期時間,我們如何在PHP中找到它的UTC日期時間?

2011-02-23 05:00:00

所以它的UTC時間居然是:

2011-02-23 02:00:00

但是,什麼是在PHP中做這種轉換最簡單的方法是什麼?

我想過使用DateTimeZone類,但正如你所看到的,我只有偏移量而不是時區名稱。要構造一個DateTimeZone對象,則需要時區名稱。

也許有更好的方法,而不使用DateTimeZone類。

在此先感謝。

回答

2

只能根據偏移量修改日期。如果您有興趣將此更改爲其他時區,請使用UTC時區創建日期。

$date = new DateTime('2011-02-23 05:00:00', new DateTimeZone('UTC')); 
$date->modify(sprintf('%s%d hours', $offset < 0 ? '+' : '-', $offset)); 

注:這甚至會工作,如果偏移量是一個字符串。即「-3」或「+3」

然後例如,如果你想在澳大利亞墨爾本看到那段時間。

$date->setTimezone(new DateTimeZone('Australia/Melbourne')); 
echo $date->format('c'); 
1

您可以使用date()和strtotime()。

$in = "2011-02-23 05:00:00"; 
$offset = "-3 hours"; 
$out = date('Y-m-d H:i:s',strtotime("$in $offset")); 

這也很好,值得注意的是,有了這個,你不受限於你抵消什麼。 strtotime()函數可以讓你做各種精彩的事情,比如「-2周+3天...」等。

你也可以從date()中獲取任何日期格式,或者只是使用strtotime()單獨獲取時間戳。

相關問題