Подтвердить что ты не робот

Разница между System.DateTime и System.DateTimeOffset

Может ли кто-нибудь объяснить разницу между System.DateTime и System.DateTimeOffset в С#.NET? Что лучше всего подходит для создания веб-приложений с пользователями из разных часовых поясов?

4b9b3361

Ответ 1

Значение DateTime определяет конкретную дату и время, оно включает свойство Kind, которое предоставляет ограниченную информацию о часовом поясе, к которому относится эта дата и время.

Структура DateTimeOffset представляет значение даты и времени вместе со смещением, которое указывает, насколько это значение отличается от UTC. Таким образом, значение всегда однозначно идентифицирует одну точку во времени.

DateTimeOffset следует рассматривать как тип даты и времени по умолчанию для разработки приложений, поскольку значения для значений DateTimeOffset гораздо чаще, чем значения для значений DateTime.

См. дополнительную информацию, примеры кода на: http://msdn.microsoft.com/en-us/library/bb384267.aspx

Ответ 2

DateTimeOffset представляет дату и время как дата и время UTC.

So

DateTimeOffset dtoNow = DateTimeOffset.Now;

совпадает с

DateTimeOffset dtoUTCNow = DateTimeOffset.UTCNow;

Здесь dtoNow будет равно dtoUTCNow, даже если один был инициализирован DateTimeOffset.Now, а другой был инициализирован DateTimeOffset.UTCNow;

Итак, DatetimeOffset хорош для хранения разницы или смещения w.r.t UTC.

Подробнее см. MSDN.

Ответ 3

Здесь есть пара пунктов:

Данные DateTime должны храниться в формате UTC в вашей базе данных:

http://www.4guysfromrolla.com/articles/081507-1.aspx

Когда вы используете информацию DateTime в своем веб-приложении, вам необходимо преобразовать ее в LocalTime:

 DateTime.UtcNow.ToLocalTime();

преобразует его в локальное время с точки зрения веб-сервера.

Если у вас есть WebServer в одном месте, обслуживая клиентов в разных странах, вам необходимо выполнить эту операцию в javascript на самом Клиенте:

 myUTCDate.toLocaleTimeString();

http://www.java2s.com/Code/JavaScript/Date-Time/ConvertDatetoLocaleString.htm