Это мой первый раз в обработке часовых поясов.Вот сценарий:
- Сервер + База данных находится в часовом поясе UTC
Клиент 1 находится в IST Клиент 2 находится в EST
Данные, сохраненные клиентом EST, должны правильно отображаться клиенту в IST и наоборот
- Сервер запускает задание cron и считывает данные из базы данных.Необходимо правильно отображать уведомления для клиентов EST и IST в соответствии с их часовыми поясами
Технология
- Серверная ОС - Ubuntu (EC2)
- База данных -MySQL (UTC)
- Бэкэнд-сервер - Node.js
- Внешний интерфейс - Angular.jS
Что я думал
В базе данных ведите два столбца: create_at, timezone_offset
- созданный_at будет хранить все в UTC
- смещение будет хранить разницу в UTC и пример соответствующего часового пояса: смещение для IST = 330 (минут) => 5 часов 30 минут
Всякий раз, когда отправляете запрос на сервер с датой:
- выберите местное время даты (созданный_ат)
- найти смещение от UTC
- преобразовать созданный_кат в UTC (используя момент)
- отправить преобразованный созданный_счет, смещение на сервер
- сохранить созданный_кат, смещение в базе данных как есть
Для запуска cron на сервере
- читать записи из базы данных, используя созданный_кат + смещение
для возврата ответа API
- возвращать созданный_ат (в UTC), смещение для каждой записи вjson response
- Клиент для отображения даты и времени, используя созданный_кат + смещение (используя момент)
Это правильный способ обработки часового пояса?
Должен ли я использовать тип данных datetime для create_at в MySQL?