Как показать смещение свободного часового пояса dst?

иметь поле информации о часовом поясе, которое показывает смещение часового пояса (например, 'UTC+1'). использовал для этого «getOffset», но теперь в летнее время он возвращает «UTC + 2» для того же часового пояса.

мой вопрос: как определить, включен ли dst или как получить свободное смещение dst?

проверил DateTimeZone и документ DateTime, но ничего не нашел.


person Puschie    schedule 08.04.2019    source источник
comment
Похоже на проблему XY. Да, часовые пояса меняют свои смещения UTC в течение года. Вот почему простое сохранение смещения UTC довольно бесполезно, если вы хотите позже обратиться к тому же часовому поясу. Вы должны сохранить часовой пояс как Europe/Amsterdam, тогда вы сможете вычислить его смещение UTC по мере необходимости. Просто наличие UTC + 2 даже не говорит вам, соблюдает ли страна летнее время или нет и в каком направлении будет свободное от летнего времени в любой момент времени.   -  person deceze♦    schedule 08.04.2019
comment
Прочтите местное время, особенно $is_associative параметр. И что сказал @deceze.   -  person RamblinRose    schedule 08.04.2019


Ответы (1)


Вы можете получить информацию о том, находится ли что-то в настоящее время в DST или нет, только из объекта Date; DateTimeZone никогда не "находится" в летнее время или нет, оно просто содержит информацию, когда дата переходит в летнее время, поэтому она всегда зависит от конкретного экземпляра Date. В классе Date для этого нет специального метода, но это возможный форматер даты:

echo 'Is DST: ', $date->format('I') ? 'yes' : 'no';
person deceze♦    schedule 08.04.2019
comment
идеально :) это то, что я искал - person Puschie; 08.04.2019