C# 使用夏令时进行日期-时间转换

C# 使用夏令时进行日期-时间转换,c#,datetime,c#-4.0,datetime-conversion,C#,Datetime,C# 4.0,Datetime Conversion,我使用以下代码在时区之间转换日期时间 TimeZoneInfo timeZone = TimeZoneInfo.FindSystemTimeZoneById(site.TimeZone); returnTime = TimeZoneInfo.ConvertTime(DateTimeOffset.Parse(time.ToString()), timeZone); CST时区的夏令时调整发生在3月12日。在那天,它给出了一个错误作为 提供的DateTime表示无效时间。例如,当时钟向前调整时,跳

我使用以下代码在时区之间转换日期时间

TimeZoneInfo timeZone = TimeZoneInfo.FindSystemTimeZoneById(site.TimeZone);
returnTime = TimeZoneInfo.ConvertTime(DateTimeOffset.Parse(time.ToString()), timeZone);
CST时区的夏令时调整发生在3月12日。在那天,它给出了一个错误作为

提供的DateTime表示无效时间。例如,当时钟向前调整时,跳过的周期中的任何时间都是无效的


我如何更改支持日光节约的日期-时间转换

我遇到了类似的问题,并使用此易于使用的替代方案修复了所有问题:


另一种方法是先转换为UTC,然后再转换为目标时区。转换为UTC时,还要检查传入的时间是否不明确,您可能需要对此进行调整,请检查以下内容


您需要知道源时间值的时区-可用于确定时间是否不明确。如果不模糊,通过检查是标准时间(应用时区的基准UTC偏移量)还是夏时制(应用非基准UTC偏移量),通过源时区转换为UTC-UTC偏移量、模糊检查和夏时制检查可以通过时区信息完成。如果不明确,您可以假设时间是标准时间,或者使用其他方法指定时间是否为夏令时-一旦确定,请使用之前的偏移值。然后使用目标时区从UTC转换。

时间的值是多少,它是否应该以CST表示时间,或者是UTC之类的其他东西?您可以通过始终在UTC中工作并尽可能晚地将任何转换为本地时间来修复它,这样就不会在本地时间尝试进一步的转换/处理。因为每个UTC值都可以映射到您的本地时间(虽然有时有一个模糊的输出),您将永远不会以无效的时间工作。如果有任何DATE时间,那么考虑使用DATETMEOSOffice。您应该考虑使用NotoTime。它的功能比.NET的DateTime丰富得多。仅链接的答案通常位于堆栈溢出上。随着时间的推移,链接可能会萎缩,变得不可用,这意味着你的答案对未来的用户来说是无用的。如果你能在实际的帖子中提供你答案的一般细节,引用你的链接作为参考,那将是最好的。