Опасность угадать, поэтому я могу ошибаться.
Проблема в том, что заданный вами временной интервал имеет смещение 0
, поэтому оно такое же, как UTC- но это не то же самое, что и ваше время, когда следующий DST в часовом поясе GMT .
GMT совпадает с UTC, т.е. смещение составляет 0
.Тем не менее, вы упоминаете летнее время, и когда вы переходите на летнее время, ваши часы перемещаются на 1 час вперед, также как и ваше смещение UTC.Таким образом, ваше время сейчас относительно UTC на самом деле UTC + 0100
.Вот откуда наступает дополнительный час.
Это может помочь сначала преобразовать все время в UTC, в конце концов, для этого он и нужен, верно?02:30 GMT
при следующем DST 01:30 UTC
.Таким образом, по сравнению с этим, отметка времени теста 02:01 UTC
в будущем займет около получаса - следовательно, 32 minutes from now
.
Если вы ожидаете увидеть вместо этого 30 minutes ago
, ваша дата тестирования должна иметьбыл 2011-05-31T01:01:44+00:00
для того, чтобы выразить метку времени UTC, которая была эквивалентна времени 02:01
на дисплее часов .
Самое безопасное решение - использовать метки времени UTCвсегда - это то, как ТАК, Facebook и Twitter датируют свои сообщения.В этом случае метка времени UTC может быть однозначно интерпретирована и отформатирована для часового пояса каждого пользователя.
В таком случае ваша задача будет убедиться, что используемая вами метка времени - это не просто то, что вы видите на циферблате, а эквивалент UTCо нем - в вашем текущем часовом поясе время UTC может быть на 1 час меньше отображаемого времени.И в зависимости от того, что вы используете для генерации вашего HTML, вы сможете найти функцию, встроенную в язык / платформу или стороннюю библиотеку, которая даст вам UTC-эквивалент текущего времени, отображаемого наваши часы в вашем часовом поясе с учетом летнего времени.