几个月前,我被引入了新的DateTimeOffset
类型,很高兴DateTime
关于时区的缺陷最终得到了解决。
但是,我想知道使用这种新类型是否有任何开销或问题。
我在一个多语言环境的Web应用程序上工作。有没有人知道任何可以影响我的东西,只是在我的所有日期/时间工作中使用它?这里有滥用的窗口吗?
参考:DateTimeOffset: A New DateTime Structure in .NET 3.5 by Justin Van Patten
答案 0 :(得分:47)
有时候你真的只是希望及时代表“本地”(时区不知道)的日期和时间而不是即时。说实话,只表示一个时间更有用 - 例如“不管时区如何,都会在上午8点叫醒我” - 但日期和时间也很有用。
我同意,对于绝大多数情况,DateTimeOffset
更适合。它确实让我感到奇怪的是,虽然没有DateTimeTimeZone
结构同时包含瞬间和它的时区......但偏移量实际上并不能为您提供所需的所有信息。 (例如,给定DateTimeOffset
,您不知道24小时后的时间是什么,因为您不知道DST何时可能会启动。)
如果你想要那种结构,我有一个very crude implementation in another answer。我相信它可以很容易地改进:)
答案 1 :(得分:3)
嗯,一个明显的答案是,当你需要支持没有附带SP的客户端时(实际上它不是3.5 - 它是2.0 SP1,同时发货)。
答案 2 :(得分:0)
尽管我不希望在DateTimeOffset上使用DateTime,但请注意,有时您需要这样做,因为MS .Net不支持DateTimeOffset作为DataColumn.DataType属性DataColumn.DataType Property,即使SQL datetimeoffset自SQL2008。
我自己在使用ReadXml
读取(XmlReadMode.InferTypedSchema
)XML导出的DataSet的DateTimeOffset值时遇到问题;它将其读取为DateTime并在我尝试将其合并到DateTimeOffset列时崩溃