你如何处理PHP中的时区差异计算?

我被告知以下计算用户当地时间的方法有时不起作用.在
PHP中执行此操作的最佳方法是什么?你是做什么?

public function getTimeOffset ($time) {
    $this->_cacheTimeOffset();  
    if ($this->timeOffsetExecuted) {
        $d = date("O");
        $neg = 1;

        if (substr($d, 0, 1) == "-") {
            $neg = -1;
            $d = substr($d, 1);
        }

        $h = substr($d, 0, 2)*3600;
        $m = substr($d, 2)*60;

        return $time + ($neg * ($h + $m) * -1) + (($this->timeOffset + $this->getDstInUse()) * 3600);
    }
    return $time;
}

最佳答案 使用DateTime扩展名,例如
DateTime::getOffset,


DateTimeZone::getOffset

有些国家/地区可能会执行多个时区更新,
这个方法DateTimeZone::getTransitions揭示了过渡历史

点赞