从城市和州/省或邮编获取时区偏移量

时间:2012-01-12 20:55:53

标签: asp.net api timezone

我有一个asp.net网站,它将使用EST时间托管在服务器上,很可能是在美国东部时间运行的计算机/设备上进行的。用户将更新有关北美各地的信息。我需要在更新所在位置的本地时间进行更新的时间戳,而不是服务器或计算机时间。所以我需要能够根据City和State / Province或Zip代码获取位置的偏移量。我已经看过http://www.earthtools.org/webservices.htm#timezone,它需要经度和经度,这是我没有的。

1 个答案:

答案 0 :(得分:1)

您可以从Google地图中退出纬度和经度。

例如,地址为'123 Street,Los Angeles,CA 12345'或地址仅为邮政编码'12346'

public void GetCoordinate(string address)
{
    WebClient client = new WebClient();
    Uri uri = new Uri(String.Format("http://maps.google.com/maps/geo?output=csv&q=" + HttpUtility.UrlEncode(address)));

    // Return numbers -
    // 1 = Status Code
    // 2 = Accurancy
    // 3 = Latitude
    // 4 = Longitude
    string[] geocodeInfo = client.DownloadString(uri).Split(',');

    decimal latitude = Convert.ToDecimal(geocodeInfo[2]);                
    decimal longitude = Convert.ToDecimal(geocodeInfo[3]);            
}

我建议以UTC格式保存创建/更新的时间。显示时,根据用户的时区偏移量(保存在用户配置文件中)将该UTC转换为用户的本地时间。