【发布时间】:2018-02-26 19:35:06
【问题描述】:
我需要计算两个时区之间的小时数差异,当前面的时区移动到第二天时,我遇到了一些问题。
例子:
//Let's say it is 11pm 23:00 in LA
$local_tz = new DateTimeZone('America/Los_Angeles');
$local = new DateTime('now', $local_tz);
$local_hour = $local->format('H');
//NY is 3 hours ahead, so it is 2am, 02:00
$user_tz = new DateTimeZone('America/New_York');
$user = new DateTime('now', $user_tz);
$user_hour = $user->format('H');
按照这个问题 (Calculate hours between dates in different time zones) 中的示例,我得到一个不正确的结果:
$diff = $user_tz->getOffset($local);
error_log('$diff '.gmdate("H:i:s", $diff)); //outputs 20:00:00
如果洛杉矶是下午 4 点,那么纽约是晚上 7 点,那就很容易了:
$time_diff = ($user_h - $local_h); //$time_diff = 3;
但是当纽约移动到第二天时,我再次得到不正确的结果:
$time_diff = ($user_h - $local_h); //$time_diff = -21;
那么我该如何解释另一个时区已经移到新的一天呢?
【问题讨论】:
-
$time_diff = $time_diff > 0 ? $time_diff : $time_diff + 24;也许这会解决它?
标签: php date time timezone timezone-offset