简体   繁体   中英

Php Datetime() returning offset as 0 for different timezone

I need to get the offset between two timezones in PHP. I am using below code to do that:

        $origin_tz="America/Los_Angeles";
        $remote_tz="UTC";
        $origin_dtz = new DateTimeZone($origin_tz);
        $remote_dtz = new DateTimeZone($remote_tz);
        $origin_dt = new DateTime("now", $origin_dtz);
        $remote_dt = new DateTime("now", $remote_dtz);
        $offset = $origin_dtz->getOffset($origin_dt) - $remote_dtz->getOffset($remote_dt);

I am getting offset as 0. What am I doing wrong here ?

getOffset: returns the timezone offset in seconds from UTC

$origin_tz="America/Los_Angeles";
$remote_tz="Europe/Berlin";

$origin_dtz = new DateTime('NOW', new DateTimeZone($origin_tz));
$remote_dtz = new DateTime('NOW', new DateTimeZone($remote_tz));

$originOffset = $origin_dtz->getOffset(); // -25200 => 7h to UTC
$remoteOffset = $remote_dtz->getOffset(); // 7200 => 2h to UTC

$offset = $originOffset - $remoteOffset; // -32400 => -9h

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM