首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DateTime对DateTimeOffset

DateTime对DateTimeOffset
EN

Stack Overflow用户
提问于 2010-12-02 02:39:34
回答 8查看 339.3K关注 0票数 1K

DateTimeDateTimeOffset之间有什么区别,什么时候应该使用?

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

这很好,但我一直在阅读DateTimeOffset以及它如何捕捉对象本身的本地和UTC时间。

EN

回答 8

Stack Overflow用户

发布于 2010-12-02 17:47:08

DateTime只能存储两个不同的时间,本地时间和UTC。类别属性表示哪个。

DateTimeOffset对此进行了扩展,能够存储来自世界各地的本地时间。它还存储该本地时间与UTC之间的偏移量。注意,除非在类中添加一个额外的成员来存储UTC偏移量,否则DateTime是如何做到这一点的。或者只和UTC合作过。这本身就是个好主意。

票数 110
EN

Stack Overflow用户

发布于 2018-10-19 09:32:00

微软的这段代码解释了一切:

代码语言:javascript
复制
// Find difference between Date.Now and Date.UtcNow
  date1 = DateTime.Now;
  date2 = DateTime.UtcNow;
  difference = date1 - date2;
  Console.WriteLine("{0} - {1} = {2}", date1, date2, difference);

  // Find difference between Now and UtcNow using DateTimeOffset
  dateOffset1 = DateTimeOffset.Now;
  dateOffset2 = DateTimeOffset.UtcNow;
  difference = dateOffset1 - dateOffset2;
  Console.WriteLine("{0} - {1} = {2}", 
                    dateOffset1, dateOffset2, difference);
  // If run in the Pacific Standard time zone on 4/2/2007, the example
  // displays the following output to the console:
  //    4/2/2007 7:23:57 PM - 4/3/2007 2:23:57 AM = -07:00:00
  //    4/2/2007 7:23:57 PM -07:00 - 4/3/2007 2:23:57 AM +00:00 = 00:00:00
票数 39
EN

Stack Overflow用户

发布于 2010-12-02 02:59:58

有几个地方DateTimeOffset是有意义的。一种是当你处理反复出现的事件和夏令时。假设我想设置一个闹钟,每天早上9点响。如果我使用“商店作为UTC,显示为本地时间”规则,那么当夏时制生效时,警报就会在不同的时间响起。

可能还有其他例子,但上面的示例实际上是我在过去遇到的(这是在向BCL中添加DateTimeOffset之前--当时我的解决方案是显式地将时间存储在本地时区,并沿其一侧保存时区信息:基本上是DateTimeOffset内部所做的)。

票数 36
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4331189

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档