【问题标题】:PHP: Convert timezone of a timestampPHP:转换时间戳的时区
【发布时间】:2011-12-15 00:54:16
【问题描述】:

我在使用 Zend Framework 将时间戳(即 UTC 日期时间)转换为另一个时区时遇到问题。我的默认时区是欧洲/巴黎

$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

我做错了什么?谢谢

【问题讨论】:

  • 你能澄清一下这个问题吗?我不明白你认为输出有什么问题。此外,使用缓慢而繁琐的 Zend_Date API 是否有任何特殊原因。您使用了哪些原生 DateTime API 不提供的功能?
  • 我使用时间戳。那些存储在数据库中的都是UTC。我只想将它们转换为用户的时区。另一方面,我不必使用 Zend_Date。我只是使用zend框架。 PHP 解决方案对我有效。
  • 但是日期有什么问题? 1319530421 真的是 2011-10-25T08:13:41 GMT/UTC。请参阅codepad.viper-7.com/HxJgeJ 或尝试使用epochconverter.com
  • 那么,我想我有一个解析日期的错误。我的错。感谢您的帮助。
  • 没问题 :) 帮自己一个忙,试试原生 DateTime API。

标签: php zend-framework timezone timestamp


【解决方案1】:

您对示例中的时间戳记有误。它的日期是:

date_default_timezone_set('UTC');

$timestamp = 1319530421;

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

因此,您的示例完全正确,只是您的期望不正确。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-09-22
    • 2018-12-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-26
    • 2011-05-10
    • 2019-09-11
    相关资源
    最近更新 更多