您好,我将确定一种输入任何类型位置数据的方法(我可以满足任何类型的需求),例如城市/州、邮政编码、街道地址等。然后取回该位置的当地时间。
该功能是在某个地方构建的,还是我可以使用已经开发的好的资源/类?
谢谢。
最终从谷歌搜索中检索搜索结果,因为我没有纬度/经度。
用户 HTML Agility 提取页面内容,过滤包含“时间”的节点,很简单,第一项就是需要的结果。
如果您使用谷歌搜索“time cincinnati oh”,您会在页面顶部返回“周五(美国东部时间)下午 1:41 - 俄亥俄州辛辛那提时间”。此代码块将其提取出来。安全的是,如果时间无法确定,搜索页面只显示结果,所以数组中的第一项就像“显示“yourSearch”的结果”等。
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";
}
}