2011-10-25 35 views
3

我有问题转换时间戳,这是一个UTC日期时间,到另一个时区使用Zend框架。我的默认时区为欧洲/巴黎PHP:转换timezone的时区

$timestamp = 1319530421; 
$date = new Zend_Date(); 
$date->setTimezone('UTC'); 
$date->set($timestamp, Zend_Date::TIMESTAMP); 
echo $date->get(Zend_Date::W3C).' - '.$date->getTimezone().'<br />'; 
$date->setTimezone('Europe/Paris'); 
echo $date->get(Zend_Date::W3C).' - '.$date->getTimezone().'<br />'; 

呼应

2011-10-25T08:13:41+00:00 - UTC 
2011-10-25T10:13:41+02:00 - Europe/Paris 

而是因为时间戳

2011-10-25T10:13:41+00:00 - UTC 

我在做什么错了这是错的?谢谢

+2

请您澄清一下问题。我不明白你认为输出错误。另外,是否有任何特别的原因使用缓慢和繁琐的Zend_Date API。您使用的本地DateTime API不提供哪些功能? – Gordon

+0

我使用时间戳。那些存储在数据库中的是UTC。我只是想将它们转换为用户的时区。另一方面,我不需要用Zend_Date来完成。我只是使用zend框架。 PHP解决方案对我来说是有效的。 – jerkan

+0

但日期有什么问题? 1319530421真的是2011-10-25T08:13:41 GMT/UTC。看到http://codepad.viper-7.com/HxJgeJ或尝试与http://www.epochconverter.com/ – Gordon

回答

0

你在你的例子中错误的时间戳。它的日期是:

date_default_timezone_set('UTC'); 

$timestamp = 1319530421; 

echo date('c e', $timestamp); # 2011-10-25T08:13:41+00:00 UTC 

所以这是正确的与你的例子,只是你的期望不是。