【发布时间】:2017-08-28 08:47:30
【问题描述】:
我正在使用以下代码在时区之间转换日期时间
TimeZoneInfo timeZone = TimeZoneInfo.FindSystemTimeZoneById(site.TimeZone);
returnTime = TimeZoneInfo.ConvertTime(DateTimeOffset.Parse(time.ToString()), timeZone);
CST 时区的夏令时调整发生在 3 月 12 日。那天它给出了一个错误
提供的 DateTime 表示无效时间。例如,时钟向前调整时,被跳过的周期内的任何时间都是无效的
如何更改支持夏令时的日期时间转换
【问题讨论】:
-
time的值是多少,它应该代表 CST 中的时间,还是其他诸如 UTC 之类的时间? -
您可以通过始终在 UTC 中工作并尽可能晚地将任何转换保持到本地时间来修复它,这样就不会在本地时间尝试进一步的转换/处理。由于每个 UTC 值都可以映射到您的本地时间(尽管有时输出不明确),因此您永远不会使用无效时间。
-
如果有任何 DateTime 则考虑使用 DateTimeOffset。
-
您应该考虑使用 NodaTime。它的功能比 .NET 的 DateTime 丰富得多。
标签: c# datetime c#-4.0 datetime-conversion