DateTime.ToUniversalTime() 不正确
DateTime.ToUniversalTime() not correct
我对 ToUniversalTime()
方法有疑问。
先了解一点信息:我在德国生活和工作,所以我的标准时区是 UTC+1。但是现在(夏天)我的时区是 UTC+2。
我的应用程序需要将本地时间转换为 UTC。所以我一开始尝试:
OutputTime = InputTime.ToUniversalTime();
但这只减少了 1 小时而不是两个小时。经过一些研究,我发现 InputTime.Kind
是 Unspecified
,所以我尝试了:
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);
我对 ToUniversalTime()
方法有疑问。
先了解一点信息:我在德国生活和工作,所以我的标准时区是 UTC+1。但是现在(夏天)我的时区是 UTC+2。
我的应用程序需要将本地时间转换为 UTC。所以我一开始尝试:
OutputTime = InputTime.ToUniversalTime();
但这只减少了 1 小时而不是两个小时。经过一些研究,我发现 InputTime.Kind
是 Unspecified
,所以我尝试了:
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);