DateTime.ToUniversalTime() not correct

本文关键字:not correct ToUniversalTime DateTime | 更新日期: 2023-09-27 18:12:53

我对ToUniversalTime()方法有一个问题。

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

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

OutputTime = InputTime.ToUniversalTime();

,但这只减去了1小时而不是2小时。稍作研究后,我发现InputTime.KindUnspecified,所以我尝试:

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

,但仍然得到相同的问题。

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

TimeZone.CurrentTimeZone.GetUtcOffset(DateTime.Now)

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

有什么想法吗?由于

DateTime.ToUniversalTime() not correct

不确定这是否是最好的解决方案,但这肯定是有效的:

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);