Как проверить, является ли временной сдвиг в летнее время?

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», то у вас недостаточно информации, чтобы сделать это определение. Было бы предпочтительнее, если бы вы могли организовать доступ к названию часового пояса, в котором находится пользователь (например, «Америка / Нью-Йорк»).