是否有返回 TimeZone 或基于坐标的偏移量的函数?

Posted

技术标签:

【中文标题】是否有返回 TimeZone 或基于坐标的偏移量的函数?【英文标题】:Is there a function to return a TimeZone or an offset based on coordinates? 【发布时间】:2012-10-19 20:57:44 【问题描述】:

在给定坐标的情况下,是否有一个函数可以返回时区(或某个“支点”的偏移量,例如 GMT 或 UTC)?

IOW,我想(假设“TimeZoneType”是一个类或枚举左右):

TimeZoneType timeZone = getTimeZoneForCoordinates(<latitude>, <longitude>);

-或:

int timeZoneDifferential = getTimeZoneOffsetFromUTCForCoordinates(<latitude>, <longitude>);

我在 gis.stackexchange 和 gis.stackexchange 之间发布了这个问题。如果被告知,我将删除此问题并将其发布在此处...

【问题讨论】:

我不明白语言的重要性,但我的 GUI 是英语(至少现在是这样;以后可能会全球化/本地化) 我的意思是 programming 语言,因为您的问题没有任何标签。 @MiserableVariable 并没有你想的那么简单。实际时区并不严格遵循经度。国际日期变更线是一个典型的例子,但也有许多例外情况,时区划定因实际原因绕经线弯曲。事实上,也有时区的偏移量不是 1 小时的整数倍。 添加@paddy 所说的内容。考虑到亚利桑那州没有夏令时。德克萨斯州埃尔帕索位于山区时区,其余位于中部。请参阅 timetemperature.com/tzus/time_zone.shtml 获取显示时区仅与经度相关的地图。 见***.com/questions/6247432/…。还有***.com/questions/1855393/… 【参考方案1】:

一个简单的问题,一个重要的答案:

很少有公司能够做到这一点。 iphone 是我所知道的第一款可以从地理位置确定时区的设备。甚至我的 TomTom Navi 也无法做到这一点,我必须手动输入 TimeZone 偏移量。

你会怎么做。

    购买一些 xxx euro navteq "WorldMaps",或者使用 OpenStreetMap 以更便宜的价格购买。 稍后进行一些转换,您将拥有世界每个国家/地区的多边形。 这样的国家通常有 50.000 点或更多代表国家边界。

    一旦你有了这些多边形,你就必须编写一个函数,为给定的(纬度/经度)提供 countryPolygonId(或 countryID)。 (countryId = findCountry(lat, lon); // 使用多边形中的点方法

    一旦你有了国家,你必须找到下一个大城市: 您需要有系统的 TimeZone 模块支持的城市列表(我认为这是一个规范,但我不确定。)

然后您必须将 countryId、cityId 翻译成字符串,例如“Austria/Vienna”。 这是您的时区,您可以使用 TimeZone zt = new TimeZone("Austria/Vienna"); 进行初始化;

我希望这很有趣,但实施起来非常困难,并且要获得该任务所需的数据。 我已经针对不同的用例完成了第 1 步和第 2 步。

【讨论】:

TimeZone类有GetDateTimeUTC()、GetDateTimeLocal()、GetUTCOffset()等函数,所以我想如果我存储每个用户的UTC时间和UTCOffset,会很容易足以计算给定这个 UTC 时间,远程用户是什么时间,本地用户是什么时间。顺便说一句,六年前我在维也纳——美丽的城市! 谢谢,我也喜欢我的城市。您的问题是关于时区的坐标。您现在的评论与您的​​ OP 不同

以上是关于是否有返回 TimeZone 或基于坐标的偏移量的函数?的主要内容,如果未能解决你的问题,请参考以下文章

Apollo 客户端中基于偏移量的分页错误

带有索引/偏移量的Ruby gsub?

Kafka-消费者-偏移量的提交方式

仿苹果返回首页按钮(移动端div拖动 返回首页)

python中datetime模块的isoformat函数返回不正确的偏移量

Python 中给定 TimeZone 的标准 UTC 偏移量(无 DST)