DateTime.UtcNow提前4小时

时间:2016-08-02 14:00:39

标签: c# datetime timestamp

我已经看到了一些关于如何纠正这个问题的答案。我有一个DateTime类型的对象。我已经分配了这个对象,如下所示。

obj.TimeStamp = DateTime.UtcNow;

我似乎无法找到正确的组合或代码操作来获得正确的日期和时间。它总是比当前时间快4小时。

该软件将部署在各个时区。

是否有任何可靠的方法可确保所有时区的时间戳都准确无误。我的服务器时间设置是正确的。

谢谢。

2 个答案:

答案 0 :(得分:2)

我知道这个问题很老,但是......

var localDate = DateTime.UtcNow.ToLocalTime()

https://msdn.microsoft.com/en-us/library/system.datetime.tolocaltime(v=vs.110).aspx

阅读MSDN文章中的说明。这不是万无一失的。但是,如果您正在寻找一种获取服务器时间的方法,这是一种快速简便的方法,可以尽可能地让您变得过于疯狂。

答案 1 :(得分:0)

有趣的问题!日期和时间是一个众所周知的难以解决的问题。这看起来很简单,但实际上却很难实现。我们过去常常一直看着我们的手表,事实上,一旦你获得了时区和夏令时,它会比这更难。

看看优秀的Noda Time库。即使您没有使用它,用户指南也会提供一些很好的见解,说明为什么日期和时间难以解决。

我怀疑您的特定问题与您的时区是东部时间有关,目前正在观察夏令时,使您的时区落后于UTC 4小时。

为了向您的用户提供时间,您需要知道他们所在的时区。如果他们在纽约,那么您需要要使用UTC-04:00,如果他们在加利福尼亚州,您需要使用UTC-08:00,如果他们在新德里,则您需要使用{{1} }}

然而,如果/当他们停止观察夏令时,这可能会改变,但在这里要小心,因为没有严格的规则。东部时间在11月的第一个星期日停止观察夏令时,英国时间在10月的最后一个星期日停止,印度时间根本没有夏令时,南半球地区在冬季观察到夏令时(至少从北方的角度来看)半球地区)。

祝你好运!