我正在寻找一种将BCL时区值映射到Tzdb时区值的方法,以获取Tzdb公开的更具表现力的值:
例如,我可以按以下方式获取BCL时区。 incomingValue
变量是该区域的Microsoft Windows名称,例如https://support.microsoft.com/en-ca/help/973627/microsoft-time-zone-index-values中的Pacific Standard Time
:
var bclZone = DateTimeZoneProviders.Bcl.GetZoneOrNull(incomingValue); // ok - it works
接下来,什么是获得等效的Tzdb区域值(或多个区域)的最佳方法是什么?我一直在摆弄下面的代码无济于事。
// The Tzdb provider won't accept a BCL zone value or a Microsoft zone name.
DateTimeZoneProviders.Tzdb.GetZoneOrNull(.. ? ..);
我之所以要求这种转换,是因为Tzdb区域具有更强的表现力,其中包含可以在紧凑显示情况下使用的缩写,而我找不到与Microsoft BCL区域类型相关联的缩写或其他丰富值。 我宁愿使用Tzdb值,也不愿进行手动映射,因为我认为在这两个区域提供程序之间,它们包含了我需要的所有内容。
我也在考虑使用UTC-/ +计算转换为Tzdb值,但是我在这里问是否有更好的noda方法。