LINUX.ORG.RU

Как синхронизировать таймзону между фронтендом и бэкендом?

 ,


0

3

Часовые пояса часто заставляют задуматься как с ними правильно работать. В большинстве случаев при проектировании API принято использовать или unixtime или датувремя с указанием часового пояса, но мой вопрос не про это.

Мой вопрос относится к API для фронтенда (т.е. речь идет не про RESTful API для server-to-server взаимодействия, а про API для фронтендов к которому одно из приоритетных требований - это минимизация количества запросов).

Например, есть метод который должен выдать список задач на сегодня. Понятие «сегодня» зависит от текущей таймзоны. Как бэкенду определить текущую таймзону фронтенда? Мои варианты:

  1. Посмотреть в профиле пользователя, какая там указана таймзона. С профилем есть две проблемы: во-первых, пользователи очень редко выбирают свою таймзону, во-вторых, даже если пользователь указал правильную таймзону в профиле (или, например, её удалось как-то автоматически определить при регистрации), пользователь может поехать (или вообще переехать) в другой часовой пояс.

  2. В метод списка задач на сегодня нужно явно передать таймзону, что-то вроде: GET /tasks/today?offset=+03:00 ИМХО выглядит как какой-то костыль.

  3. Добавить ко всем запросам в API заголовок что-то вроде Current-User-Offset: +03:00 Если заголовок не передан, ориентироваться на значение по умолчанию (например, на таймзону из профиля).

  4. API спроектирован неправильно, таких проблем быть вообще не должно. Например, нужен метод с получением списка задач, а какие из задач отнести к «сегодняшним» решает фронтенд.

★★
Ответ на: комментарий от aol

пока мы не говорим о времени, time_t = 1234567890 - просто число

Ага. Мы с пацанами всегда берем временной тип, чтобы удобнее было не говорить о времени.

thesis ★★★★★
()
Ответ на: комментарий от thesis

чувак, да что же с тобой не так-то.

Способен думать и обобщать. Это мой последний пост в этом треде. И правда - удалились мы от изначальной темы.

bugfixer ★★★★★
()
Ответ на: комментарий от bugfixer

И это мы еще о механизмах психологической защиты не поговорили.
Тут недавно одного мыслящего обобщателя долго с лопаты кормили за «указатель это просто число», ты уж побереги себя.

thesis ★★★★★
()
Ответ на: комментарий от thesis

Мы с пацанами всегда берем временной тип, чтобы удобнее было не говорить о времени.

Ой, ну, ты тоже хорош, а?!

Талмуд откроем прямща?

In ISO C, time_t can be either an integer or a floating-point type, and the meaning of time_t values is not specified

meaning of time_t values is not specified

Давайте уже упражнения в словоблудии свернём, а?

aol ★★★★★
()
Последнее исправление: aol (всего исправлений: 1)
Ответ на: комментарий от aol

А, это же из главы «21.2 Time Types»! Там еще строка «time_t is the simplest data type used to represent simple calendar time», которую ты не приводишь в цитате, даже не знаю, почему, ггг.

thesis ★★★★★
()
Ответ на: комментарий от thesis

которую ты не приводишь в цитате, даже не знаю, почему

А я тебе скажу, почему: потому что ты начнёшь передёргивать. Впрочем, ты и так справился. Умничка.

aol ★★★★★
()
Ответ на: комментарий от aol

Никто так не любит обвинять в передергивании, как люди, которым не удалось незаметно передернуть. Вот же я гад, даже некорректным цитированием меня не прошибить!

thesis ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.