C# ConvertTimeToUtc异常

C# ConvertTimeToUtc异常,c#,.net,datetime,C#,.net,Datetime,您好,将本地时间转换为UTC时出现异常。我运行我的应用程序 在设置了“俄罗斯标准时间”的窗口上 更新 异常文本表示-无法完成转换,因为datetime的Kind属性 这是错误的。例如,如果种类是本地的,则时区的值必须为TimeZoneInfo.Local 抱歉,这不是复制粘贴-原始邮件不是英文的。说: 参数异常 dateTime.Kind是DateTimeKind.Utc和sourceTimeZone不等于TimeZoneInfo.Utc。 -或- dateTime.Kind是DateTimeK

您好,将本地时间转换为UTC时出现异常。我运行我的应用程序 在设置了“俄罗斯标准时间”的窗口上

更新

异常文本表示-无法完成转换,因为datetime的Kind属性 这是错误的。例如,如果种类是本地的,则时区的值必须为TimeZoneInfo.Local

抱歉,这不是复制粘贴-原始邮件不是英文的。

说:

参数异常
dateTime.Kind是DateTimeKind.Utc和sourceTimeZone不等于TimeZoneInfo.Utc。
-或-
dateTime.Kind是DateTimeKind.Local和sourceTimeZone不等于TimeZoneInfo.Local

这似乎就是问题所在<代码>日期时间。现在返回DateTimeKind.Local。
但是,使用它对我来说很有用:

dt1 = DateTime.SpecifyKind( dt, DateTimeKind.Unspecified );
TimeZoneInfo.ConvertTimeToUtc( dt1, tz );

TimeZoneInfo.Equals
方法不仅在Id上进行比较:它还测试两个时区是否具有相同的调整规则(
TimeZoneInfo.HasSameRules
)-您可以使用Reflector看到这一点

我怀疑本地时区实际上使用的是夏令时,而
TimeZoneInfo.FindSystemTimeZoneById(“俄罗斯标准时间”)
返回的时区没有夏令时


您应该能够使用调试器轻松地检查这一点。

您可以将ArgumentException的全文添加到您的问题中吗?是的,它也适用于我。当DateTime.Kind设置为Unspecified时,这是可以的。但是我想知道为什么会抛出异常?这可能只意味着对TimeZoneInfo进行TimeZoneInfo参考检查。Local@Captain:是的,该方法似乎比较了TimeZoneInfo和DateTimeKind
dt1 = DateTime.SpecifyKind( dt, DateTimeKind.Unspecified );
TimeZoneInfo.ConvertTimeToUtc( dt1, tz );