DateTime.ToUniversalTime() 不正确

DateTime.ToUniversalTime() not correct

我对 ToUniversalTime() 方法有疑问。

先了解一点信息:我在德国生活和工作,所以我的标准时区是 UTC+1。但是现在(夏天)我的时区是 UTC+2。

我的应用程序需要将本地时间转换为 UTC。所以我一开始尝试:

OutputTime = InputTime.ToUniversalTime();

但这只减少了 1 小时而不是两个小时。经过一些研究,我发现 InputTime.KindUnspecified,所以我尝试了:

InputTime= DateTime.SpecifyKind(InputTime, DateTimeKind.Local);
OutputTime = InputTime.ToUniversalTime();

但还是遇到同样的问题。

我最大的问题是,如果我尝试这个

TimeZone.CurrentTimeZone.GetUtcOffset(DateTime.Now)

它给了我两个小时的时间跨度。

有什么想法吗? 谢谢

不确定这是否是最佳解决方案,但这确实有效:

var InputTime = new DateTime(2016, 10, 12, 12, 22, 0, DateTimeKind.Local);
var offset = TimeZone.CurrentTimeZone.GetUtcOffset(DateTime.Now);
var OutputTime = DateTime.SpecifyKind(InputTime - offset, DateTimeKind.Utc);