1

こんにちは私は、都市/州、郵便番号、住所など、あらゆる種類の位置データを入力する方法を決定します(ほぼすべてに対応できます)。そして、その場所の現地時間を取得します。

その機能はどこかに組み込まれていますか、それともすでに開発された使用できる優れたリソース/クラスがありますか?

ありがとう。

4

1 に答える 1

0

緯度/経度がなかったので、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";
            }
        }
于 2012-05-11T17:44:34.690 に答える