Когда бы вы предпочли DateTime, а не DateTimeOffset - PullRequest
47 голосов
/ 05 ноября 2008

Несколько месяцев назад я познакомился с новым типом DateTimeOffset и был рад, что недостатки DateTime в отношении часовых поясов наконец были устранены.

Тем не менее, мне было интересно, есть ли какие-либо издержки или проблемы, которые могут возникнуть при использовании этого нового типа.

Я работаю над многоязычным веб-приложением. Кто-нибудь знает что-нибудь, что могло бы помешать мне просто использовать это для всей моей работы с датой / временем? Здесь есть окно для оскорблений?

Ссылка: DateTimeOffset: новая структура DateTime в .NET 3.5 от Джастина Ван Паттена

Ответы [ 3 ]

47 голосов
/ 05 ноября 2008

Иногда вы действительно просто хотите представить «локальную» (временную зону не знает) дату и время, а не момент во времени. Честно говоря, чаще полезно представлять только время - например, "разбуди меня в 8 утра, независимо от часового пояса" - но дата и время тоже могут быть полезны.

Я согласен, что для подавляющего большинства случаев DateTimeOffset лучше подходит. Мне кажется странным, что нет структуры DateTimeTimeZone, которая имеет момент и часовой пояс ... хотя смещение не дает вам всей необходимой информации. (Например, учитывая DateTimeOffset, вы не знаете, какое время будет через 24 часа, потому что вы не знаете, когда наступит летнее время.)

Если вам нужна такая структура, у меня есть очень грубая реализация в другом ответе . Я уверен, что это может быть улучшено очень легко:)

3 голосов
/ 05 ноября 2008

Хорошо, один очевидный ответ будет, когда вам нужно поддерживать клиентов без SP, в который он входит (на самом деле это не 3.5, а 2.0 2.0, который поставляется одновременно).

0 голосов
/ 13 февраля 2019

Хотя я не предпочел бы использовать DateTime поверх DateTimeOffset, обратите внимание, что иногда вам НУЖНО это делать, поскольку MS .Net не поддерживает DateTimeOffset в качестве свойства DataColumn.DataType Свойство DataColumn.DataType , хотя SQL datetimeoffset существует с SQL2008.

У меня была проблема с чтением (ReadXml) значения DateTimeOffset экспортированного набора данных XML с XmlReadMode.InferTypedSchema; он читал его как DateTime и падал, когда я пытался объединить его в столбец DateTimeOffset

...