在我的 .NET 8 应用程序中,我当前使用两个库:TimeZoneNames 和 TimeZoneConverter。我发现 TimeZoneNames 没有得到积极维护,作者建议改用 .NET 6+ 内置类。
我需要仅使用标准 .NET 8 功能来实现以下目标:
获取特定国家的所有时区,类似于
TimeZoneNames.GetTimeZonesForCountry
:
var zones = TZNames.GetTimeZonesForCountry("BR", "pt-BR");
获取时区的本地化显示名称,例如欧洲/莫斯科时区的俄语“Москва”或西班牙语“Moscu”。
我已经查看了 Microsoft 博客上的可用文档、Stack Overflow 上的问题,但在没有像
NodaTime
这样的第三方库的情况下找不到实现此目的的方法。我知道 IANA
时区可以按国家/地区分组,并且 TimeZoneNames
使用此功能。
有没有办法在.NET 8中实现这一点而不依赖外部库?
我认为没有足够的标准 .NET 函数为此目的而创建,因为它非常特殊和具体。
您可能需要自己手动创建一个系统并为其创建自己的功能。
您可以做的可能是找到一个时区和/或语言翻译的数据库,或者自己创建一个数据库并在代码中访问它。