В настоящее время наше приложение использует локальное время, а не UTC. Я знаю, что очень важно использовать UTC, но не могу за всю жизнь помнить, почему.Почему я должен использовать UTC?
Предполагая, что DateTimes хранятся со смещением при сравнении местного времени с временем UTC или с другим временем с другим часовым поясом, конечно, любая используемая библиотека будет знать о разных часовых поясах и мутировать два объекта в что можно сравнить?
До тех пор, пока смещение передается с помощью DateTime (которое, как говорят, использует объекты, а не строки), я не понимаю, почему это имеет значение. Почему я должен иметь дело с 2014-09-01T13:44:13+00:00
, а не 2014-09-01T14:44:13+01:00
? Фактически, сохранение в виде UTC теряет информацию о смещении (местное время, когда было объявлено время).
Что мне здесь не хватает?
Контекст: У нас есть ограничения, связанные с ошибками стиля, и я подумал «аха: переместите все вещи в UTC», но потом понял, что я просто просматриваю код, преобразующий кучу объектов DateTime использовать часовой пояс UTC, и это показалось мне пустой тратой времени.
Идите, найдите библиотеки, которые понимают часовые пояса ... отчитайтесь. Ваша предпосылка «наверняка любая библиотека, которая стоит использовать, будет знать о разных часовых поясах», не обязательно действительна. Какой язык (ы) вы рассматриваете? (Вопрос, не связанный с языком реализации, может не получить столько внимания, как все это: есть 179, которые следуют за «datetime» и 10, которые следуют «utc».) –
@JonathanLeffler Пока я согласен с этим вниманием, этот вопрос совершенно независим на любом языке. –
Некоторые детали в [DateTime vs DateTimeOffset] (http://stackoverflow.com/a/14268167/634824) могут помочь в понимании - но они в основном относятся к 'DateTimeOffset'. Основные случаи, связанные с локальными датами, возникают, когда вы не имеете смещения. –