繁体   English   中英

夏令时转换日期时间

[英]Date time convertion with daylight saving

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

TimeZoneInfo timeZone = TimeZoneInfo.FindSystemTimeZoneById(site.TimeZone);
returnTime = TimeZoneInfo.ConvertTime(DateTimeOffset.Parse(time.ToString()), timeZone);

CST时区的夏令时调整发生在3月12日。 那天它给出了一个错误

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

如何更改支持夏时制的日期时间转换

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

Noda Time“一个更好的.NET日期和时间API”

另一种方法是先转换为UTC,然后再转换为目标时区。 在转换为UTC时,还要检查传递的时间是否模棱两可,您可能需要对此进行调整,请检查以下方法:解决模棱两可的时间

您需要知道源时间值的TimeZone-可用于确定时间是否不明确。 如果不是模棱两可,则通过检查源时间是标准时间(应用TimeZone的基本UTC偏移量)还是日光时间(应用非基本UTC偏移量),通过源TimeZone转换为UTC-UTC偏移量,歧义检查和日光检查可以通过TimeZoneInfo完成。 如果模棱两可,则可以假定时间为标准时间,或者可以使用其他方法指定是否为夏令时-确定后,请像以前一样使用偏移值。 然后使用目标时区从UTC转换。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM