Мы работаем над внедрением поддержки часовых поясов для нашего веб-приложения.
Этот замечательный пост SO помог нам нам: Летнее время и лучшие рекомендации по часовым поясам
Мы внедрили базу данных OLSON TZ в MYSQL и используем ее для преобразований TZ.
Мы создаем приложение для планирования так:
Мы сохраняем все наши заказы, которые происходят в определенную дату в определенное время в UTC, в полях DateTime и преобразуем их, используя CONVERT_TZ()
. Это прекрасно работает.
То, в чем мы не так уверены, это такие вещи, как каникулы и перерывы:
Каникулы - это просто ссылки на дату и не включают временную часть. Поскольку CONVERT_TZ()
не работает с объектами даты, мы предполагаем, что лучше всего сохранить значение даты в соответствии с часовым поясом пользователя?
id1 id3 startDate endDate
-----------------------------
3 6 2010-12-25 2011-01-03
4 3 2010-09-22 2010-09-26
То же самое с повторяющимися перерывами во время хранения для каждого дня недели. В настоящее время мы храним их перерывы с индексами 0-6 для каждого дня недели. Поскольку это просто объекты времени, мы не можем использовать CONVERT_TZ () и предполагать, что мы должны просто сохранить их как значения времени в часовом поясе пользователя?
bID sID dayID startTime endTime
--------------------------------
1 4 1 12:00:00 14:00:00
2 4 4 13:30:00 13:30:00
В этом случае с отпусками и перерывами мы будем сравнивать их только со временем бронирования ПОСЛЕ того, как время бронирования было конвертировано в местное время пользователя.
Это правильный способ обработки вещей, или мы должны хранить оба отпуска и перерывы каким-либо другим способом, чтобы мы могли преобразовать их в UTC (не уверен, как это будет работать для перерывов).
Спасибо за вашу помощь!