Ответ Говарда правильный, и, пожалуйста, проголосуйте и примите его.
Для справки, мне кажется, полезно объяснить разницу между объектами даты и локализованными представлениями даты.
Во многих языках программирования объекты даты используются для представления уникальных моментов времени. Игнорируя релятивистские аргументы, можно предположить, что в любом случае мы можем определить момент времени, который является универсальным для каждого, независимо от того, как мы измеряем время.
Если бы для каждого момента времени мы могли создать уникальный ярлык, этот ярлык можно было бы передавать и ссылаться на него однозначно. Цель объектов даты - выступать в качестве уникальной универсальной метки для данного момента времени .
Можно придумать любое количество методов для построения такой схемы маркировки, и то, как каждый объект даты выбирает это, несущественно для любого, кто их использует.
Примером может быть использование числового смещения от универсального события ( X секунд с момента взрыва солнца ).
Только когда мы хотим взять момент времени и сериализовать его в удобочитаемую строку, мы должны иметь дело со сложностями часовых поясов, локалей и т. Д. *
( Локальная строка даты ) + ( Форматер даты ) => Точка времени
Точка времени + ( Форматер даты ) => ( Локальная строка даты )
Каждый момент времени универсален ... не существует такого понятия, как нью-йоркский момент времени или момент времени gmt , только после преобразования временной точки в местный строка (с использованием средства форматирования даты) отображает любую связь с часовым поясом.
Примечание: я уверен, что есть много блогов / статей по этой самой проблеме, но мой Google Foo подводит меня в этот час. Если у кого-то есть энтузиазм по поводу этой проблемы, пожалуйста, не стесняйтесь.