如果我有一个用户的地址或zipcode,并且用它来查找他们的时区,这样他们就不必在单独的字段中输入它,那么这将非常有用。

最佳答案

我建议不要试图从用户的邮政编码推断时区。
向用户提问:
“你的邮政编码”不太可能经常改变。
它会改变,但可能比“你在哪个时区”的问题少。
例如,如果用户在某个地方旅行,他们的邮政编码没有改变,但他们的时区却改变了。
如果你想问“你在哪个邮政编码?”,用户可能不知道,尤其是他或她在旅行时。
相反,我会尝试直接找出时区。
大多数平台都会为您提供这样做的方法。
例如,如果您正在为.NET编写桌面软件,则可以通过
使用时区信息类获取当前时区,或
以UTC时间从服务器发送所有时间到客户端,然后使用DateTime.ToLocal Time将UTC时间转换为本地时间。
或者,如果您正在编写Web软件,那么您可以使用Java脚本从用户的Web浏览器获取时区并提交给服务器。
查看以下日期函数:
http://www.w3schools.com/jsref/jsref_obj_date.asp
您可以使用各种日期函数推断时区。
有一个方法“getTimeZoneOffset”,但它没有给出一个+/-。例如,它会给出+1和-1gmt的“1”,这可能是个问题。
但是,您可以做的是从服务器发送已知日期,使用转换方法将其转换为本地时间,然后将结果发送回服务器。
当你发送已知日期时,你可能应该以毫秒偏移量的形式发送它。这样您就可以避免任何区域性问题(日期在不同地方的格式不同)。
有Win32函数会给你时区,我确信可能有Unix、Mac和Java API会做同样的事情。

10-07 16:16
查看更多