如何使用 php 获取正确的时区值



>我正在使用以下代码将服务器时间更改为另一个时区

 $datetime = new DateTime(2014-02-27 03:03:00);
$la_time = new DateTimeZone('America/New_York');
$datetime->setTimezone($la_time);
$dateformat="Y-m-d h:i A";
return $datetime->format($dateformat);

它工作正常,除了上午/下午...

正确结果是:02-26-14 10:03

上午,但我得到的结果是 02-26-14 10:03 下午。

你能告诉我问题在哪里吗

结果将始终基于原始时区设置。如果要转换为其他时区,则必须设置时区后初始化DateTime对象。

这是一个使工作更轻松的功能:

function convertTimezone($date,$from_tz,$to_tz,$format='Y-m-d h:i A') {
    $date = new DateTime($date, new DateTimeZone($from_tz));
    $date->setTimezone(new DateTimeZone($to_tz));
    return $date->format($format);
}

可以通过检查提供的时区是否有效来改进该功能。

示例用法:

echo convertTimezone('2014-02-27 03:03:00','Pacific/Nauru','Pacific/Chatham');

输出:

2014-02-27 04:48 AM

演示

在初始化日期时间时设置时区:

$datetime = new DateTime("2014-02-27 03:03:00", new DateTimeZone('America/New_York'));
$dateformat="Y-m-d h:i A";
return $datetime->format($dateformat);

设置日期时间时,它使用当时有效的时区。如果稍后更改时区,它将更改时间的表示形式,但时间将基于原始时区设置。

编辑:我没有足够仔细地阅读这个问题; 您应该在初始化DateTime对象时设置时区,如手册中所示。

相关内容

  • 没有找到相关文章

最新更新