getOffset
возвращает смещение, используемое часовым поясом в определенный момент.
Часовые пояса могут иметь более одного смещения в течение истории - наиболее распространенным случаем является летнее время, когда смещение изменяется в течение указанного периода. Поэтому в зависимости от времени года определенный часовой пояс может иметь различное смещение.
Параметр datetime определяет момент, который вы хотите проверить, а getOffset
проверит историю часового пояса и вернет тот, который использовался в этот конкретный момент времени - независимо от того, какой часовой пояс является датой / временем. В документации вы можете найти пример этого: http://php.net/manual/en/datetimezone.getoffset.php#refsect1-datetimezone.getoffset-examples
Тем не менее, когда вы используете фиксированные значения смещения, такие как "+0000", это означает, что объект DateTimeZone
всегда будет иметь это смещение, все время - оно никогда не изменится. Вот почему, когда вы вызываете $utcZone->getOffset
, он всегда возвращает ноль, независимо от того, какой параметр datetime вы передаете.
Если вы хотите смещение даты, вызовите метод getOffset
для объекта DateTime
.