有人知道如何通过客户端IP获取olson zoneinfo吗?我尝试了一些免费的IP服务,但他们返回的是"纽约"而不是"美国/纽约"。
您需要将其分为两个步骤。
有许多服务可以从纬度和经度坐标中获得IANA/Olson时区标识符。请参阅:如何使用经纬度坐标从一个位置获取时区?
要获得纬度和经度,您应该尽量不要依赖IP地理定位。许多网络浏览器都运行在可以报告其真实坐标的实际设备上,例如在手机上。如果必须的话,你可以回到IP地理位置,有很多服务试图做到这一点。
IP地理定位的问题是不能保证准确性。许多人通过代理服务器、VPN或其他机制访问互联网,在这些机制中,你查找的IP可能根本与他们的位置无关。
尝试geoap(http://www.maxmind.com/),它不是免费的,但运行良好,数据库经常更新。然后你可以从com.maxmind.geoip.timeZone获得时区信息,按国家和地区从客户端ip 获得时区信息
String timeZoneByCountryAndRegion(String country, String region)