DateTime
vs DateTimeOffset
В .NET есть два главных способа работы со временем:
DateTime
и DateTimeOffset
.DateTimeOffset
это представление абсолютного времени.То есть, речь идёт о моменте во времени, который является однозначно единым для всех.
Другим способом представить мировое время является
DateTime
с полем Kind
установленным в значение DateTimeKind.Utc
.DateTime
же представляет другое понятие - календарное время.Календарное время можно представить как точку на чьём-то календаре.
Но мы понимаем, что календарей по всему миру очень много и все они различаются по часовым поясам.
Соответственно,
DateTimeOffset
предоставляет тот же функционал, что и DateTime
, но вместе со знанием часового пояса.