首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >调整DateTime到DST

调整DateTime到DST
EN

Stack Overflow用户
提问于 2013-03-06 16:05:56
回答 2查看 1.3K关注 0票数 3

为了保持它的简短和甜蜜,我有两个PC的:

PC 1已关闭 PC 2已启动DST。 PC 1向PC 2发送一个DateTime,它需要并使用它来设置时间。

以上我已经到位,但我的问题是,当PC 2接收到的DateTime,我如何检查,看看它是否需要调整?

个人电脑以英国为基地。

编辑:-更多的细节,以防出现混乱。当PC 2从PC 1检索时间时,它将将系统的时间更改为此值,但我需要确保如果需要+/- 1小时(DTS),则在设置系统日期和时间之前应用它。

EN

回答 2

Stack Overflow用户

发布于 2013-03-06 16:09:28

我建议使用UTC进行运输和坚持。

另外,请注意不要将日期时间作为算法的关键部分--它只是数据。日期和时间的变化和纠正自己。我见过的应用程序崩溃时,PC纠正是时候了:)

下面是另一篇关于这个主题的更多信息的文章:夏令时及时区最佳做法

票数 2
EN

Stack Overflow用户

发布于 2013-03-06 16:44:57

您没有显示任何代码,但您将问题标记为c#,所以我将从这个角度回答。

如果您只需要确保您谈论的是同一时刻,那么就使用DateTime.Kind = DateTimeKind.Utc,比如从DateTime.UtcNow获得的。

如果您确实需要知道PC1认为它是一次,而PC2认为它是另一次,而且您仍然想知道这两件事代表了相同的时刻,那么使用DateTimeOffset。这将包括计算机的本地日期和时间,以及该日期和时间所代表的与UTC的偏移量。

无论采用哪种方法,您都应该使用ISO8601格式进行传输和持久化,这样无论观察者的文化或时区如何,您的含义都是明确的。在.Net中,这是通过.ToString("o")DateTimeDateTimeOffset获得的。

UTC的DateTime格式为ISO8601格式,如下所示:

代码语言:javascript
复制
2013-03-06T09:00:00Z

DateTimeOffset的ISO8601格式如下所示:

代码语言:javascript
复制
2013-03-06T10:00:00+01:00

.Net将此称为往返航班模式--因为它是为您所描述的目的而设计的。

有关DateTimeOffset的进一步澄清,请参见这个职位

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

https://stackoverflow.com/questions/15252267

复制
相关文章

相似问题

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