DateTime vs DateTimeOffset

DateTime vs DateTimeOffset

目前,我们有一种以时区感知方式处理.NET DateTimes的标准方法:每当我们生成一个DateTime我们在世界协调时做这件事(例如使用DateTime.UtcNow),每当我们显示一个时,我们就从UTC转换回用户的本地时间。

很好,但我一直在读DateTimeOffset以及它如何捕获对象本身中的本地和UTC时间。所以问题是,使用DateTimeOffset我们已经在做什么了?


慕沐林林
浏览 1215回答 3
3回答

宝慕林4294392

来自微软:DateTimeOffset值的这些用途比DateTime值更常见。因此,应该将DateTimeOffset视为应用程序开发的默认日期和时间类型。资料来源:日期时间、DateTimeOffset、TimePAN和TimeZoneInfo之间的选择, MSDN我们用DateTimeOffset对于几乎所有的东西,我们的应用程序都处理特定的时间点(例如,创建/更新记录时)。作为附带说明,我们使用DATETIMEOFFSET在SQLServer 2008中也是如此。我明白了DateTime当您只想处理日期、时间或一般意义上的任何一种时,都是有用的。例如,如果您有一个闹钟,您想每天早上7点响,您可以将它存储在DateTime利用DateTimeKind的Unspecified因为你想让它在早上7点爆炸,不管DST是怎么回事。但是,如果要表示警报事件的历史记录,请使用DateTimeOffset.当使用DateTimeOffset和DateTime特别是在类型之间分配和比较时。而且,只有比较DateTime实例是相同的DateTimeKind因为DateTime比较时忽略时区偏移量。

qq_花开花谢_0

datetime只能存储两个不同的时间,即本地时间和UTC。这个仁爱属性指示哪个。DateTimeOffset通过能够存储来自世界任何地方的时间来扩展这一点。它还存储偏移量在当地时间和协调世界时之间。注意,除非向类添加一个额外的成员来存储UTC偏移量,DateTime是如何做到这一点的。或者只和UTC合作过。这本身就是个好主意。
打开App,查看更多内容
随时随地看视频慕课网APP