检索时区/当地时间

时间:2012-05-11 14:09:43

标签: c# timezone

您好我会确定一种方法来输入任何类型的位置数据(我可以提供任何类型的东西),例如城市/州,邮政编码,街道地址等。并获取当地时间位置。

这个功能是在某个地方构建还是我可以使用已经开发的好资源/类?

感谢。

1 个答案:

答案 0 :(得分:0)

结束从Google搜索中检索搜索结果,因为我没有lat / long。

用户HTML敏捷提取页面内容,过滤包含“时间”的节点,第一项就足够简单了。

如果你谷歌“时间辛辛那提哦”你回到“星期五下午1:41(美国东部时间) - 在俄亥俄州辛辛那提的时间”页面顶部。这个代码块提取了。安全性是如果无法确定时间,搜索页面只显示结果,因此数组中的第一项就像是“显示”你的搜索“的结果”等。

public void timeZoneUpdate()
        {
            try
            {
                arrayToParse.Clear();

                string URL = @"https://www.google.com/search?q=time+" + rowCity + "%2C+" + rowState;

                HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create(URL);
                myRequest.Method = "GET";
                WebResponse myResponse = myRequest.GetResponse();
                StreamReader sr = new StreamReader(myResponse.GetResponseStream(), System.Text.Encoding.UTF8);
                string result = sr.ReadToEnd();
                sr.Close();
                myResponse.Close();
                //Console.Write(result);

                HtmlAgilityPack.HtmlDocument htmlSnippet = new HtmlAgilityPack.HtmlDocument();
                htmlSnippet.Load(new StringReader(result));

                bool foundSection = false;

                foreach (HtmlAgilityPack.HtmlNode table in htmlSnippet.DocumentNode.SelectNodes("//table"))
                {
                    foreach (HtmlAgilityPack.HtmlNode row in table.SelectNodes("tr"))
                    {
                        foreach (HtmlAgilityPack.HtmlNode cell in row.SelectNodes("td"))
                        {
                            if (cell.InnerText.Contains("Time"))
                            {
                                foundSection = true;
                            }
                            if (foundSection)
                            {
                                //Console.WriteLine("Cell value : " + cell.InnerText);
                                arrayToParse.Add(cell.InnerText);
                            }
                        }
                    }
                }
            retrievedTimeZone = arrayToParse[0].ToString().Split('-')[0].Trim();

            if(retrievedTimeZone.Contains("Showing"))
            {
                retrievedTimeZone = "Undetermined";
            }
        }