CMS, который я использую, позволяет мне получить доступ к временному смещению пользователя с момента времени UTC / GMT. Итак, если пользователь установил свой часовой пояс для EST, тогда это смещение будет «-5».
То, что я делаю прямо сейчас, когда мне нужно отображать текущее время, это что-то вроде:
date('M j Y h:i A', time() + $offset*3600)
Это работает, за исключением случаев, когда переход на летнее время влияет на пользователя, а затем на час отстает.
Итак, мой вопрос в том, как я могу определить, должен ли данный временной сдвиг (например, «-5») добавить к нему час?
Вы не можете получить это только за счет смещения, потому что смещение относится ко всей широте, а страны, у которых нет единого DST. Например, в Австралии, летнее время не наблюдается в Квинсленде, Северной Территории или Западной Австралии, но везде. Вам нужно будет привязать пользователей к геолокации, а затем проверить с помощью API DateTimeZone PHP, есть ли в этой стране DST.
Также см. Как автоматически определять часовой пояс пользователя?
http://php.net/manual/en/function.date.php
I (капитал i) | Является ли дата в летнее время | 1, если летнее время, 0 в противном случае.
Помогает ли это?
Если все, что у вас есть, это «-5», то у вас недостаточно информации, чтобы сделать это определение. Было бы предпочтительнее, если бы вы могли организовать доступ к названию часового пояса, в котором находится пользователь (например, «Америка / Нью-Йорк»).