我已经看到了一些关于如何纠正这个问题的答案。我有一个DateTime类型的对象。我已经分配了这个对象,如下所示。
obj.TimeStamp = DateTime.UtcNow;
我似乎无法找到正确的组合或代码操作来获得正确的日期和时间。它总是比当前时间快4小时。
该软件将部署在各个时区。
是否有任何可靠的方法可确保所有时区的时间戳都准确无误。我的服务器时间设置是正确的。
谢谢。
答案 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月的最后一个星期日停止,印度时间根本没有夏令时,南半球地区在冬季观察到夏令时(至少从北方的角度来看)半球地区)。
祝你好运!