尝试将Microsoft Windows BCL区域映射到Tzdb区域以访问其缩写值

时间:2018-12-27 15:18:55

标签: nodatime

我正在寻找一种将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方法。

0 个答案:

没有答案