时区.IsInvalidTime没有捕捉到2010年埃及夏令时造成的无效时间

本文关键字:夏令时 时间 无效 2010年 IsInvalidTime 时区 | 更新日期: 2023-09-27 18:10:24

这是一个特殊情况

我正在修复将无效的本地时间转换为UTC。在本地时区,由于使用夏令时(dst),某些时间段无法转换为UTC。如果给定正确的时区,timezone. isinvalidtime()可以用来识别这样的数据时间值。

在埃及,2010年夏时制改变了4次(因为斋月)。第二个转换似乎没有被IsInvalidTime()检测到。

编辑 TimeZoneInfo.ConvertTime()是我用来实际转换为UTC的,它将这些值转换为UTC。一个错误的转换,但转换都是一样的。

有人遇到过这个问题吗,有什么建议吗?

时区.IsInvalidTime没有捕捉到2010年埃及夏令时造成的无效时间

Windows时区数据库在准确反映时区规则的历史变化方面是出了名的差。请使用IANA/Olson时区数据库。有关不同数据库的更多信息,请参阅TimeZone标记wiki。

对于。net,最好的解决方案是使用NodaTime。它完全实现了IANA/Olson数据库。您可以使用Africa/Cairo时区,它准确地反映了所有的历史变化。