我有一种DateTime
使用特定时区从本地转换为 UTC 的方法:
TimeZoneInfo timeZone = FindSystemTimeZoneById(timeZoneId);
DateTime dateTimeInUtc = TimeZoneInfo.ConvertTimeToUtc(localDateTime, timeZone);
return dateTimeInUtc;
但有时(我不知道何时以及为什么,但大多数情况下它都能正常工作)这种转换不像我预期的那样工作。
例如:
- 时区是
-5
- 当地时间是
08/28/2013 12:00:00 AM
(DateTimeKind
是Unspecified
)
那么,在这行代码具有上述值之后,您期望什么?
DateTime dateTimeInUtc = TimeZoneInfo.ConvertTimeToUtc(localDateTime, timeZone);
我希望 UTC 时间为08/28/2013 5:00:00 AM
. 但
08/28/2013 4:00:00 AM
. 如果时区为-5,则不正确。
绝对相同的代码可以正常工作几个月。即使我看过调试器转换是正确的。
大约 2 周前,我在这段代码中遇到了同样的问题(错误的转换)。但是第二天问题就消失了,没有任何代码更改。