为了保持它的简短和甜蜜,我有两个PC的:
PC 1已关闭 PC 2已启动DST。 PC 1向PC 2发送一个DateTime,它需要并使用它来设置时间。
以上我已经到位,但我的问题是,当PC 2接收到的DateTime,我如何检查,看看它是否需要调整?
个人电脑以英国为基地。
编辑:-更多的细节,以防出现混乱。当PC 2从PC 1检索时间时,它将将系统的时间更改为此值,但我需要确保如果需要+/- 1小时(DTS),则在设置系统日期和时间之前应用它。
发布于 2013-03-06 16:09:28
我建议使用UTC进行运输和坚持。
另外,请注意不要将日期时间作为算法的关键部分--它只是数据。日期和时间的变化和纠正自己。我见过的应用程序崩溃时,PC纠正是时候了:)
下面是另一篇关于这个主题的更多信息的文章:夏令时及时区最佳做法
发布于 2013-03-06 16:44:57
您没有显示任何代码,但您将问题标记为c#,所以我将从这个角度回答。
如果您只需要确保您谈论的是同一时刻,那么就使用DateTime和.Kind = DateTimeKind.Utc,比如从DateTime.UtcNow获得的。
如果您确实需要知道PC1认为它是一次,而PC2认为它是另一次,而且您仍然想知道这两件事代表了相同的时刻,那么使用DateTimeOffset。这将包括计算机的本地日期和时间,以及该日期和时间所代表的与UTC的偏移量。
无论采用哪种方法,您都应该使用ISO8601格式进行传输和持久化,这样无论观察者的文化或时区如何,您的含义都是明确的。在.Net中,这是通过.ToString("o")从DateTime或DateTimeOffset获得的。
UTC的DateTime格式为ISO8601格式,如下所示:
2013-03-06T09:00:00ZDateTimeOffset的ISO8601格式如下所示:
2013-03-06T10:00:00+01:00.Net将此称为往返航班模式--因为它是为您所描述的目的而设计的。
有关DateTimeOffset的进一步澄清,请参见这个职位。
https://stackoverflow.com/questions/15252267
复制相似问题