从区域/坐标查找时区

Looking up timezone from region / coordinates

我想根据 ISO 区域代码或坐标查找时区。

我有一个带有坐标、县和地区代码的数据点集合,例如:

33.942501,-118.407997,"美国","美国-加拿大"

我想找到 IANA 时区标识符,例如。 America/Los_Angeles,根据以上信息。

是否可以用 NodaTime 做到这一点?我看不到从区域代码或位置查找 DateTimeZone 或时区标识符的方法。

GeoTimeZone NuGet package can provide a lookup by lat/long to IANA ID, and then you can use DateTimeZoneProviders.Tzdb[id] to get the DateTimeZone from that. See the project home page了解更多详情。

在 Noda Time 本身中,您可以使用 TzdbDateTimeZoneSource.Default(或您已加载的)然后使用 ZoneLocationsZone1970Locations 属性来查找特定 ISO-3166 的区域国家...但它们不会低于“国家”级别(尽管它们确实具有范例 lat/long 值)。它们基于 zone.tab and zone1970.tab - 因此 Noda Time 中也不存在该文件中不存在的任何信息。

听起来 GeoTimeZone 可能是您最好的选择。