4

当我有用户的地址或邮政编码并使用它来查找他们的时区时,这将很有用,因此他们不必在单独的字段中输入它。

4

5 回答 5

3

我建议不要尝试从用户的邮政编码中推断出时区。

给用户的问题:

“您的邮政编码是多少”不太可能经常更改。

它会改变,但可能不如“你在哪个时区”这个问题那么频繁。

例如,如果用户到某个地方旅行,他们的邮政编码没有改变,但他们的时区改变了。

如果您尝试询问“您在哪个邮政编码?”,用户可能不知道,特别是如果他或她正在旅行。

相反,我会尝试直接弄清楚时区是什么。

大多数平台都会给你一种方法来做到这一点。

例如,如果您正在为 .NET 编写桌面软件,您可以通过

  1. 使用 TimeZoneInfo 类获取当前时区,或
  2. 以 UTC 时间从服务器发送所有时间到客户端,然后使用 DateTime.ToLocal Time 将 UTC 时间转换为本地时间。

或者,如果您正在编写 Web 软件,那么您可以使用 Java Script 从用户的 Web 浏览器获取时区并将其提交给服务器。

看看以下日期函数:

http://www.w3schools.com/jsref/jsref_obj_date.asp

您可以使用各种日期函数推断时区。

有一种方法“getTimezoneOffset”,但它没有给出 +/-。因此,例如,对于 +1 和 -1 GMT,它将给出“1”,这可能是一个问题。

但是,您可以做的是从服务器发送一个已知日期,使用转换方法将其转换为本地时间,然后将结果发送回服务器。

当您向下发送已知日期时,您可能应该将其作为毫秒偏移量发送。这样您就可以避免任何文化问题(不同地方的日期格式不同)。

有 Win32 函数可以为您提供时区,我相信可能有 Unix、Mac 和 Java APIS 可以做同样的事情。

于 2008-12-15T00:33:56.920 回答
1

我记得曾经有一个数据集为时区信息提供邮政编码。该数据集可能来自以下之一:USPS、人口普查或 NOAA(用于天气预报)。

抱歉,我无法提供更多信息。

于 2008-12-14T21:17:05.337 回答
1

最近在 AD Olson 运行的时区邮件列表中讨论了这一点,他创建了时区名称和规则的 Olson 数据库。没有一个单一的、简单的来源(这并不奇怪,真的;有很多国家,还有很多不同的规则)。

我遇到并添加书签的一些信息的位置之一是www.geonames.org。尤其是在 2008 年 9 月。您可以通过匿名 FTP 从Elsie下载邮件列表存档(大约 17 MB,可以追溯到 90 年代初,如果不是更早的话)。这些电子邮件提到 ESRI 作为信息来源。

于 2008-12-14T23:49:26.947 回答
0

是的 - 您可以使用 geonames.org 等地理编码器从邮政编码中获取纬度、经度(地理编码器还可能包含时区或为此提供单独的网络服务)。

如果您的地理编码器不这样做,那么给定纬度和经度,您可以从此网络服务获取时区:

http://www.earthtools.org/webservices.htm#timezone

于 2008-12-17T00:48:02.010 回答
0

您可以使用 GeoIP 从他们的 IP 地址获取经纬度,从而获得他们的纬度/经度以转换为他们的时区。

http://www.hostip.info/

您可以调用他们的网络服务,也可以自己下载数据库。

但是,有一些警告。

  1. 如果用户有代理服务器,您将获得他们的代理 IP。
  2. 有些 IP 不翻译
于 2009-06-19T15:43:31.897 回答