我试图了解如何在TimeZone或TimeZoneInfo对象中使用.NET,并使用它将MySQL数据库中的所有日期从UTC转换为本地用户正确的时区。我正在构建一个桌面应用程序。我计划使用内置的Convert_TZ函数,但从这些对象获得的信息与内置方法不一致。
我发现本文(http://codeofmatt.com/2014/04/07/working-with-time-zone-names-in-net/)将时区信息对象设置为更好的显示格式,但仍然不匹配。
我对使用TimeZone对象非常陌生。如果有更好的方法来获得当前的时区,并且更容易使用,那么我将尝试这样做。
发布于 2014-12-30 22:15:23
MySQL使用IANA时区。你可以读到关于MySQL的时区支持在这里的文章。您可以在时区标记wiki中了解不同类型的时区。
Windows上的.NET与Microsoft时区一起工作。这是通过TimeZoneInfo对象完成的。旧的TimeZone对象也在.NET框架中,但不应该再使用了。
要在.NET中使用IANA时区而不是Windows,可以使用野田时间库。使用Noda Time,您可以获得系统的本地IANA时区如下:
string tz = DateTimeZoneProviders.Tzdb.GetSystemDefault().Id;请注意,Linux或macOS上的macOS已经使用带有TimeZoneInfo对象的IANA时区,因此Noda是可选的。
如果您已经在使用Windows,则可以将它们转换为使用这里描述的方法时区。
还请注意,在这个答案的前一个版本中,我建议不要在Windows上使用MySQL的内置时区支持,因为它们没有保持时区数据的最新。这是向MySQL team 这里报告的,并且已经修复。如果您在Windows上运行MySQL,您将找到最新的时区数据文件这里。
https://stackoverflow.com/questions/27707898
复制相似问题