我正在用Java实现一个Android应用程序,我希望能够用用户的时区来验证用户的物理地址信息。例如,用户可以输入日本标准时间,但地址可能在美国,这显然是错误的。我将如何验证这一点?我正在使用AOSP的TimeZonePicker来获取时区详细信息。
我知道我可以检查时区的国家/地区和用户在实际地址中列出的国家/地区,但有些国家/地区有多个时区,因此这并非在所有情况下都有效。我认为最好使用城市、州和国家/地区,因为像田纳西州这样的州在该州有多个时区。
查询 Google 时区 API 以返回所提供位置的州和时区。
如果不使用任何提供传感器的位置,则可以将地址反向地理定位为纬度和经度坐标。
获得坐标后,查询谷歌时区API
https://maps.googleapis.com/maps/api/timezone/json?location=39.6034810,-119.6822510×tamp=1331161200&key=API_KEY
您将获得包含时区名称和时区 ID 的响应:
{
"dstOffset" : 0.0,
"rawOffset" : -28800.0,
"status" : "OK",
"timeZoneId" : "America/Los_Angeles",
"timeZoneName" : "Pacific Standard Time"
}
此时之后的验证逻辑由您决定。