У нас есть база данных с географическими координатами. Как только мы заполнили его соответствующими часовыми поясами, используя tzworld. Пользователь устанавливает местоположение, включая город, город имеет часовой пояс - здесь, как мы знаем часовой пояс пользователя (нам нужно отображать дату и время на сервере). Но изменяются часовые пояса: появляются некоторые новые, некоторые старые удаляются.Как обрабатывать новый часовой пояс?
Есть ли какие-либо рекомендации или инструменты для обработки таких изменений?
I.e. есть город Foo
с часовым поясом Foo/Bar
. Однажды tzdata был изменен, и Foo/Bar
был разделен на Foo/Old_Bar
и Foo/New_Bar
часовых поясов с одинаковыми смещениями UTC. У нас все еще есть Foo/Bar
в нашем db. На самом деле, это перерыв в BC, но это нормально, поскольку, скажем, мы можем справиться с этими перерывами BC. Но затем tzdata снова был изменен, и теперь Foo/New_Bar
имеет другое смещение. И здесь возникают неприятности. Некоторые пользователи из Foo
city смотрят неправильное местное время.
Для того чтобы быть уверенным, что вы меня правильно поняли: это не про DST, речь идет о том, что изменяются часовые пояса (их имена).
Насколько я могу судить, нам нужен какой-то машиночитаемый tzdata diff. Как
split: Foo/Bar Foo/Old_Bar,Foo/New_Bar
move: Foo/New_Bar -05:00
Эта проблема заставляет меня чувствовать, что хранение часовых поясов - плохая идея. Есть ли лучший?
Не умеют ли это делать библиотеки датировки? (Отслеживайте изменения часового пояса и т. Д.) Можете ли вы указать конкретный пример, где 'Foo/New_Bar' может иметь два разных смещения за ту же дату? Это реальная проблема в мире? (Я не говорю, что это не так - мне просто сложно представить, где это может быть применимо) –
@Pekka 웃 Пока это не вопрос реального мира (главным образом потому, что большинство наших пользователей из регионов со стабильным временем зон), но это легко может быть. Я случайно заметил, что некоторые часовые пояса исчезли, а некоторые появились после недавнего обновления tzdata. Я хочу иметь надежное решение, и эта проблема и особенно отсутствие информации о ней преследуют меня. – ksimka
Но у вас действительно есть прецедент, где это может быть проблемой? Если у вас есть дата и время, то ваша библиотека должна иметь возможность разрешить ее до одного момента времени (и она должна быть способна обрабатывать [сумасшедшие края]; (http://stackoverflow.com/questions/6841333) разработчики [проводят много времени] (http://codeblog.jonskeet.uk/2014/09/30/the-mysteries-of-bcl-time-zone-data/), чтобы убедиться, что они это делают). Если зона исчезает или добавляется, библиотека должна иметь список этих изменений. Это действительно то, что вам нужно для обработки в вашем приложении? –