在 PHP 中将时间和日期从一个时区转换为另一个时区

2022-08-30 10:10:09

基本上,我需要的是一个脚本,当提供时间和时区时,可以返回另一个时区的时间。

我的主要问题是:

  • 从哪里获取GMT的时间偏移量 - 是否有可用于此目的的公共数据库?
  • 如何同时考虑夏令时 (DST) 的差异。
  • 如何很好地将其全部包装在PHP类中 - 或者已经有这样的类可用?

答案 1
<?php
$date = new DateTime('2000-01-01', new DateTimeZone('Pacific/Nauru'));
echo $date->format('Y-m-d H:i:sP') . "\n";

$date->setTimezone(new DateTimeZone('Pacific/Chatham'));
echo $date->format('Y-m-d H:i:sP') . "\n";
?>

以上示例将输出:

2000-01-01 00:00:00+12:00
2000-01-01 01:45:00+13:45

可在 php.net 的《日期时间手册》上找到

编辑:就像Pekka说的:DateTime类从5.2开始存在,在那里你首先必须找出哪些方法真正实现,哪些方法只从5.3开始存在。


答案 2

试试这个,它可能会有所帮助:)

function converToTz($time="",$toTz='',$fromTz='')
    {   
        // timezone by php friendly values
        $date = new DateTime($time, new DateTimeZone($fromTz));
        $date->setTimezone(new DateTimeZone($toTz));
        $time= $date->format('Y-m-d H:i:s');
        return $time;
    }

一点描述:该函数采用 3 个输入、转换时间、转换为时区、当前时区,并以指定格式返回输出。


推荐