こんにちは私は、都市/州、郵便番号、住所など、あらゆる種類の位置データを入力する方法を決定します(ほぼすべてに対応できます)。そして、その場所の現地時間を取得します。
その機能はどこかに組み込まれていますか、それともすでに開発された使用できる優れたリソース/クラスがありますか?
ありがとう。
緯度/経度がなかったので、Google検索から検索結果を取得することになりました。
ユーザーHTMLの敏捷性により、ページコンテンツを抽出し、「時間」を含むノードをフィルタリングしました。最初の項目は必要な結果でした。
「timecincinnatioh」をグーグルで検索すると、ページ上部に「1:41 pm Friday(EDT)-Time in Cincinnati、OH」と表示されます。このコードブロックはそれを抽出します。安全性は、時間が決定できない場合、検索ページには結果のみが表示されるため、配列の最初の項目は「「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";
}
}