您没有显示任何代码,但您将问题标记为c#,所以我将从这个角度回答。
如果您只需要确保您谈论的是同一时刻,请使用DateTime
with .Kind = DateTimeKind.Utc
,例如 is 获得 from DateTime.UtcNow
。
如果您确实需要知道 PC1 认为这是一次,而 PC2 认为是另一次,并且您仍然想知道这两个事物代表同一时间,那么使用DateTimeOffset
. 这将包括计算机的本地日期和时间,以及日期和时间表示的与 UTC 的偏移量。
无论采用哪种方法,您都应该使用ISO8601格式进行传输和持久化,这样无论观察者的文化或时区如何,您的意思都会很清楚。在 .Net 中,这是.ToString("o")
从 aDateTime
或DateTimeOffset
.
ISO8601 格式的 UTCDateTime
如下所示:
2013-03-06T09:00:00Z
ISO8601 格式的 ADateTimeOffset
如下所示:
2013-03-06T10:00:00+01:00
.Net 将此称为往返模式 - 因为它是为您描述的确切目的而设计的。
有关进一步说明DateTimeOffset
- 请参阅此帖子。