PHP 时区转换/PHP 日期未显示正确的时区

标签 php datetime strtotime

我的服务器和 MySQL 数据库的默认时区设置为 GMT。我的 PHP 代码将显示的日期转换为用户的本地时区(在本例中为东部时区):

$OPENED_DATE = '2013-03-20 21:05:00'
$OPENED_DATE = new DateTime($OPENED_DATE);
$OPENED_DATE->setTimeZone(new DateTimeZone('America/New_York'));

然后我输出用户的日期:

$OPENED_DATE = strtotime($OPENED_DATE->format('Y-m-d H:i:s'));      
$OPENED_DATE = date('F j, Y g:i A T', $OPENED_DATE);

$OPENED_DATE 的输出:2013 年 3 月 20 日下午 5:05 GMT

实际时间显示正确,但日期输出中的“T”仍显示 GMT。有没有办法让它显示我们已经转换成的时区而不是默认的 GMT。我知道执行此操作的唯一方法是每次使用 date_default_timezone_set 切换到用户的时区,然后切换回 GMT。但我觉得必须有一种更有效的方法......

谢谢!

最佳答案

这两行是多余的

$OPENED_DATE = strtotime($OPENED_DATE->format('Y-m-d H:i:s'));      
$OPENED_DATE = date('F j, Y g:i A T', $OPENED_DATE);

这是对 date() 的调用,输出了错误的时区。

为什么不尝试一下:

$OPENED_DATE = $OPENED_DATE->format('F j, Y g:i A T');

DateTime 对象中设置了时区,但是一旦将其转换为时间戳并使用 date(),该时间就会使用服务器时区。我认为仅使用 DateTime 对象来格式化日期就足以完成您想要的操作。

关于PHP 时区转换/PHP 日期未显示正确的时区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15536334/

相关文章:

php - 从准备好的语句中获取文本(PHP、PDO)

php - wpdb - 添加特定类别中自定义字段的值

python - 将日期时间转换为字符串和格式

mysql - 在mysql表中添加一天到日期时间字段

php - 检查日期/时间是否小于提供的日期?

facebook - 使用 FQL 从 Facebook API 仅检索即将到来的生日

PHP 注入(inject)攻击 - 如何最好地清理困惑?

c# - 为什么 DateTime.AddMonths(3).AddMonths(3);给出与 DateTime.AddMonths(6) 不同的结果;?

php - php 中的 strtotime 没有给出准确的时间

php - Javascript post 到 PHP 并返回一个数组?