
У меня есть скрипт, который позволяет пользователям отправлять данные в базу данных. При отправке данных также добавляется временная метка. Мой местный часовой пояс — GMT, как и время моего сервера, установленное в Plesk 11. Но когда приходят данные, они отстают на час из-за перехода на летнее время.
Как лучше всего с этим бороться? Я думал установить часовой пояс на -1 час, но мне кажется, что это немного нечестно.
решение1
Лучший способ (IMHO) — написать временную метку UTC. Это всегда правильно и может быть преобразовано в любой заданный часовой пояс с соответствующими правилами перехода на летнее время, которые будут учтены вашим приложением и его библиотечными функциями.
решение2
Что не так с использованием собственного системного времени (или преобразованием времени клиентских систем во время, используемое для сервера БД)? Каждая основная ОС изначально обрабатывает часовой пояс DST. (Даже когда спецификации DST меняются, соответствующие ОС патчатся для адаптации.)
решение3
Если вы используете NTP, он должен автоматически перевести ваши часы на летнее время, если в выбранном вами часовом поясе эта функция включена.
Но я согласен с SvW. UTC будет лучше, если вы и ваши клиенты находитесь в разных часовых поясах.