2011-08-19 42 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); 
相关问题