当我有用户的地址或邮政编码时,这会很有用,并用它来查找时区,这样他们就不必在单独的字段中输入它。
答案 0 :(得分:3)
我建议不要尝试从用户邮政编码中推断出时区。
向用户提出问题:
“你的邮政编码是什么”不太可能经常改变。
它会改变,但可能不那么频繁,然后问题是“你在哪个时区”。
例如,如果用户在某个地方旅行,他们的邮政编码没有改变,但他们的时区有。
如果你试着询问“你的邮政编码是什么?”,用户可能不会知道,特别是如果他或她正在旅行。
相反,我会尝试直接找出时区。
大多数平台都会为您提供一种方法。
例如,如果您正在为.NET编写桌面软件,则可以通过
执行此操作或者,如果您正在编写Web软件,那么您可以使用Java Script从用户的Web浏览器获取时区并将其提交给服务器。
查看以下日期函数:
http://www.w3schools.com/jsref/jsref_obj_date.asp
您可以使用各种日期函数推断出时区。
有一个方法“getTimezoneOffset”,但它没有给出+/-。因此,例如,对于+1和-1 GMT,它将给出“1”,这可能是个问题。
但是,您可以从服务器发送已知日期,使用转换方法将其转换为本地时间,然后将结果发送回服务器。
当您发送已知日期时,您应该将其作为毫秒偏移量发送。这样你可以避免任何文化问题(日期在不同的地方的格式不同)。
Win32函数可以为您提供时区,我相信可能会有Unix,Mac和Java APIS做同样的事情。
答案 1 :(得分:1)
我记得有一个数据集为时区信息提供了邮政编码。该数据集可能来自以下之一:USPS,人口普查或NOAA(用于天气预报)。
对不起,我无法提供更多相关信息。
答案 2 :(得分:1)
最近在A D Olson运营的时区邮件列表中对此进行了讨论,后者创建了时区名称和规则的Olson数据库。没有一个简单的来源(这并不奇怪,真的;有很多国家,有很多不同的规则)。
我遇到的一些信息的位置之一是www.geonames.org。这尤其是在2008年9月。您可以通过匿名FTP从Elsie下载邮件列表存档(大约17 MB,可追溯到90年代初,如果不是之前的话)。这些电子邮件提到ESRI是一个信息来源。
答案 3 :(得分:0)
是的 - 您可以使用geonames.org等地理编码器从邮政编码中获取纬度,经度(地理编码器也可能包含时区或者有单独的网络服务)。
如果您的地理编码器没有这样做,那么根据纬度和经度,您可以从此网络服务获得时区:
答案 4 :(得分:0)
您可以使用GeoIP从其IP地址获取lat长,从而获得转换为其时区的纬度/经度。
您可以拨打他们的网络服务,也可以自己下载数据库。
然而,有一些警告。