关于.net:什么时候你会比DateTimeOffset更喜欢DateTime

When Would You Prefer DateTime Over DateTimeOffset

几个月前,我被引入新的DateTimeOffset类型,很高兴DateTime关于时区的缺陷终于得到了解决。

但是,我想知道使用这种新类型是否有任何开销或问题。

我在一个多语言环境的Web应用程序上工作。 有没有人知道任何可以影响我的东西,只是在我的所有日期/时间工作中使用它? 这里有滥用的窗口吗?

参考:DateTimeOffset:Justin Van Patten在.NET 3.5中的一个新的DateTime结构


有时你真的只想表示一个"本地"(时区不知道)的日期和时间而不是瞬间。说实话,只表示一个时间更有用 - 例如"不管时区如何,都会在上午8点叫醒我" - 但日期和时间也很有用。

我同意,对于绝大多数情况,DateTimeOffset更合适。它确实让我感到奇怪,因为没有一个DateTimeTimeZone结构同时具有瞬间和它的时区......但是偏移实际上并没有为您提供所需的所有信息。 (例如,给定DateTimeOffset,您不知道24小时后的时间是什么,因为您不知道DST何时可能会启动。)

如果你想要那种结构,我在另一个答案中有一个非常粗略的实现。我相信它可以很容易地改进:)


好吧,一个明显的答案就是当你需要支持没有它的SP的客户端时(它实际上不是3.5 - 它是2.0 SP1,同时发货)。


虽然我不希望在DateTimeOffset上使用DateTime,但请注意,有时您需要,因为MS .Net不支持DateTimeOffset作为DataColumn.DataType属性DataColumn.DataType属性,即使SQL datetimeoffset自SQL2008以来一直存在。

我自己在使用XmlReadMode.InferTypedSchema读取(ReadXml)XML导出的DataSet的DateTimeOffset值时遇到了问题。它将它读作DateTime并在我尝试将其合并到DateTimeOffset列时崩溃