ivn
Дек. 13, 2017 21:10:29
Добрый день.
Подскажите, как обычно надо отрабатывать временные зоны.
Например, если у меня есть валидатор, который сверяет текущее время на сервере где запущен django со временем клиента (т.е. запрещать размещать посты после 22:00, в то время как на сервер 22:01, а у клиента 20:00 по его времени).
И еще к примеру регистрировать время добавления комментария пользователем и выводить его для разных регионов.
Спасибо.
JOHN_16
Дек. 13, 2017 23:59:25
Есть общее правило - на сервере работать только с UTC. Т.е. хранить на сервере uCа с клиентом работать в локальнои времени
ivn
Дек. 14, 2017 10:48:23
JOHN_16
uCа
а что это?
возвращать клиенту в каком виде? например
где то пишут, что лучше всего хранить в unix времени?!
FishHook
Дек. 14, 2017 11:36:32
ivn
Хранить в БД? Так БД сама разберется, как именно ей хранить время.
ivn
Дек. 14, 2017 14:03:12
Время храним в UTC, тут ясно
Если джанго рендерит шаблон для клиента, как ему (джанго) понять для какой зоны нужно вернуть время и как?
FishHook
Дек. 14, 2017 18:36:07
ivn
понять для какой зоны нужно вернуть время и как?
https://docs.djangoproject.com/en/1.11/ref/utils/#django.utils.timezone.activateпросто активируйте нужную таймзону
ivn
Дек. 14, 2017 19:53:05
если например вот так:
timezone.activate(pytz.timezone("Europe/London"))
то, как определять
FishHook
нужную таймзону
?
брать из HTTP заголовков?
helm2004
Дек. 15, 2017 13:51:25
ivn
Дек. 15, 2017 15:16:12
helm2004
Вам , наверное, єто нужно https://pypi.python.org/pypi/pytz
С помощью этого модуля можно преобразовать UTC время (которое хранится в БД) в нужный формат для нужного часового пояса, но как определить какой нужен часовой пояс для клиента, который отправил запрос? или как обычно это делают?
например я чатюсь с помощью браузера из Лондона с пользователем из Токио. У него в чате его время у меня в чате свое время, данные хранятся на сервер.