Лучшие практики при создании приложений с поддержкой часовых поясов - PullRequest
3 голосов
/ 04 декабря 2010

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

Например, у меня есть пользователь A и пользователь B, у которых установлен часовой пояс. Пользователь А вводит время. (в его часовом поясе.) Теперь, как вы храните это в БД.

  • [вариант 1] Исходное время с исходным часовым поясом
  • [Вариант 2] Время UCT хранится в UCT.

Варианты использования:

  • На этот раз нужно показать пользователя А.
  • На этот раз необходимо показать пользователя B.
  • На этот раз нужно показать пользователя Anon.
  • Необходимо рассчитать разницу часовых поясов.

Я вижу преимущества обоих способов. Я не особо ищу ответ только на этот вопрос, но мне нужна информация о создании веб-приложений с поддержкой Timezone.

Я использую Python, но также ищу советы, не зависящие от языка.

Ответы [ 2 ]

4 голосов
/ 04 декабря 2010

Семантически, почти все даты и время, которыми вы манипулируете, являются абсолютными (например: выставление счетов, создание и модификация, которые в последний раз видели, API-дроссели, SO-вознаграждения…). Они должны храниться в UTC, чтобы не было никакой двусмысленности в них. В противном случае, когда какое-либо правительство изменит правило DST и ваши системные правила будут обновлены, значение, которое вы сохранили, изменит значение.

Если дата и время относятся также к времени и месту (например, собрание, календарь в целом), вы можете сохранить полную символическую дату в RFC 3339 , включая имя часового пояса (не то же самое) как смещение UTC), и конвертировать в UTC по запросу.

2 голосов
/ 04 декабря 2010

В общем, я думаю, что имеет смысл преобразовать время в общий формат (UTC), чтобы сохранить их, а затем преобразовать их в собственный часовой пояс пользователя при их отображении.Возможно, вы сможете угадать анонимных пользователей по их IP-адресу или по умолчанию использовать вероятный часовой пояс.

Конечно, это зависит от того, что вы делаете.Для многих вещей важно абсолютное время: например, если есть видеоконференция, время ее начала должно быть одинаковым для людей в каждом часовом поясе.Но есть несколько случаев, когда что-то делается по местному времени. Час Земли , например, с 8:30 до 9:30 вечера в каждом часовом поясе.

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