我试图找出一种方法来获取地址的当前时间,甚至只是一个州或邮政编码。
即,如果这里是中午 12:00(明尼苏达州),亚利桑那州凤凰城是几点?
理想情况下,它会考虑夏令时。
我想在不依赖外部网络服务的情况下做到这一点。
在不依赖外部 Web 服务的情况下,不可能以通用方式执行此操作。事实上,您需要两个 - 首先您需要将地址地理编码为地图上的坐标。然后找出坐标处的时区和夏令时规则。
谷歌最近开始提供时区服务,所以这在小批量时相对容易。您需要https://developers.google.com/maps/documentation/geocoding/和https://developers.google.com/maps/documentation/timezone/ 新时区 api 接受 timeStamp 参数并返回 dstOffset,可以转换到/从 DateTime 像这样/sf/answers/549131901/
或者,这里有非谷歌服务 http://www.earthtools.org/webservices.htm ,它按原样提供,可以根据坐标立即返回格式化的本地时间。您仍然需要对地址进行地理编码。
David 在这里提到的Mapping US zip code to time zone的答案是简单地将州或邮政编码映射到时区 - 但是您确实需要邮政编码,因为有些州并不那么简单(即一个州)。显然,这是一个仅限美国的解决方案。