Как сохранить точное время (летнее время) для веб-приложения? - PullRequest
2 голосов
/ 27 октября 2009

Ладно, это может быть простой вопрос, но мне еще предстоит прийти с рабочим решением, так что всем, кто может помочь, заранее спасибо.

Рассмотрим следующий сценарий: у нас есть веб-приложение, работающее на MySQL (если вам нужно знать), которое зависит от времени, например, приложение, которое отправляет электронное письмо в указанное пользователем время. Теперь каждый пользователь установил свой часовой пояс / город, и серверы работают на UTC для простоты. Точное время будет временем сервера + часовой пояс + летнее время. Пользователь хочет, чтобы электронное письмо пришло к нему 4 января 2010 года в 17:00 по его времени. Мой вопрос будет, как получить правильное летнее время? Имеется в виду, находится ли этот пользователь в регионе, который наблюдает летнее время, если он / она это наблюдал или нет?

Моим первым импульсом было бы найти веб-сервис, который с учетом текущего часового пояса / города дал бы вам правильное летнее время. Пока я не нашел ни одного. Меня обескураживает вторая идея, что я должен устанавливать правила для летнего времени, поскольку они меняются из года в год, а в некоторых странах более чем на день или два.

Любая помощь с благодарностью.

Ответы [ 2 ]

1 голос
/ 27 октября 2009

Если ваш язык программирования не поддерживает причудливую логику часового пояса, вам не нужно программировать правила самостоятельно. Вам просто нужно запрограммировать поддержку базы данных zoneinfo .

0 голосов
/ 27 октября 2009

Сохраните ваши даты в секундах с 1 января 1970 года по Гринвичу в вашей базе данных, и вы всегда будете иметь дело с временем. Когда пользователь вводит свое время, преобразуйте его соответствующим образом, используя правильные настройки часового пояса, и все готово.

Ваши серверы уже работают без часовых поясов, поэтому, когда придет время, их легко выбрать.

Вот код для преобразования часового пояса в LISP:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...