2011-08-19 109 views

回答

1

使用DateTime::createFromFormat

$d = DateTime::createFromFormat("Y-m-d H:i:s T", "2011-08-19 07:44:26 Etc/GMT"); 
echo $d->format("r"), "\n"; 
$d->setTimezone(new DateTimeZone("EST")); 
echo $d->format("r"), "\n"; 

將輸出

Fri, 19 Aug 2011 07:44:26 +0000 
Fri, 19 Aug 2011 03:44:26 -0400 

上有一篇很棒的書:php|architect's Guide to Date and Time Programming。用日期和時間編程是一個相當廣泛的主題。

+1

雖然不要忘記DateTime只適用於PHP5.3。但是,如果PHP5.3可用,這可能是更好的方法。 –

+2

@Nick'DateTime'自[PHP 5.2'](http://www.php.net/manual/ru/datetime.construct.php)開始提供。它是'DateTime :: createFromFormat'可從PHP 5.3' – J0HN

+0

啊,是的,好點@ J0HN! –

0

strtotime將字符串轉換爲整數時間戳,然後strftime將整數時間戳格式爲本地時間。

+0

strtotime()不適用於我這個時間戳。它只是返回false。 – brasimon

+0

如果您知道時區始終爲GMT,您可以在秒數值後截斷時間戳嗎?那應該會起作用。 –

0
$UTC_timezone = new DateTimeZone("GMT"); 
$date = new DateTime("2011-08-19 07:44:26",$UTC_timezone); 
echo $date->format("Y-m-d H:i:s");echo "<br/>"; 
$current_timezone = new DateTimeZone(date_default_timezone_get()); 
$date->setTimezone($current_timezone); 
echo $date->format("Y-m-d H:i:s"); 

$timestamp = $date->getTimestamp(); 

list of timezonesdate_default_time_zoneDateTime::setTimezoneDateTime::getTimestamp的細節

0

您可以使用gmmktime到GMT時間轉換爲UNIX時間戳:

INT gmmktime([INT小時[摘要分鐘[摘要第二[摘要月[摘要一天[摘要一年[摘要is_dst ]]]]]]]])

然後您可以使用日期來獲取您的本地格式。

$timestamp = gmmktime(7,44,26,8,19,2011); 
echo date("Y-m-d H:i:s",$timestamp); 
相關問題