我很欣赏这个问题已经以各种形式被多次覆盖,但似乎没有一个问题可以解决我遇到的特定问题。我有以下方法用于将传入数据转换为C#DateTime
变量。问题是,发送数据的公司声称我没有错误地转换它,因为时间在我的系统中出现了一个小时。我认为这与英国夏令时有关,但是在我的结尾,或者在他们的结尾是问题,因为我认为下面的方法将考虑到英国夏令时我使用{{{ 1}?我们将非常感激地接受任何帮助。
ToLocalTime
答案 0 :(得分:4)
ToLocalTime
会将时区调整为实际运行此方法的计算机的本地时间。根据它在云中运行/部署的位置,这可能会给您带来截然不同的结果。对于这种东西,时区可能是一个巨大的痛苦。如果他们向您发送UTC unix表示并且您可以使用ToUniversal打开DateTime并从那里 ,您可以安全地将其转换回您选择的时区,这将是理想的。
如果他们没有发送UTC,你需要确切地找出他们所期望的时区,并专门使用它而不是ToLocal。
答案 1 :(得分:0)
这取决于他们给你的东西。但假设他们给你UTC时间,你可以使用this method of .Net 4.6并通过.ToLocalTime()
将其转换为当地时间。正如另一个答案所暗示的那样,最好确保指定一个" TimeZoneInfo"而不是使用.ToLocalTime()
。