3


0

.NET都市別または経度と緯度別のタイムゾーンを取得

私は.NETを使用しており、IPによってユーザーの都市をジオロケーションできます。

ユーザーのタイムゾーンを長く取得する簡単な方法はありますか。 そして緯度。 または都市名?

Facebookがどのようにやっているのだろうか?

ありがとうございました

3 Answer


0


システムからタイムゾーンのリストを取得し、それを都市名と比較できます。

これは壊れやすいです。

あるいは、使用できるWebサービスがいくつかあり、それをlong / latに渡し、タイムゾーンを提供しますが、これは、第3部のWebサービスにつながれていることを意味します。


0


都市または経度と緯度でタイムゾーンを取得するために使用できるWebサービスがあります。


0


このコードは単純化できると確信していますが、TimeZoneのIDと名前を取得するのに役立ちました。

Private Sub checkTZ()
    Dim wc As WebClient = New WebClient()
    Dim str As String = Nothing
    Dim latPattern As String = "\bLatitude.*\<{1}"
    Dim latRegSearch As Regex = New Regex(latPattern)
    Dim lat As String = Nothing
    Dim lonPattern As String = "\bLongitude.*\<{1}"
    Dim lonRegSearch As Regex = New Regex(lonPattern)
    Dim lon As String = Nothing

    Try
        str = wc.DownloadString("http://www.ipinfodb.com/my_ip_location.php")
        lat = latRegSearch.Match(str).Value
        lon = lonRegSearch.Match(str).Value
    Catch ex As Exception
        str = "Not Found"
    End Try

    Dim pattern As String = "\<|\s|\:|\bLatitude|\bLongitude"
    Dim rgx As New Regex(pattern)
    lat = rgx.Replace(lat, "")
    lon = rgx.Replace(lon, "")

    Dim firefoxEpochDate As Date = "1/1/1970"
    Dim s_CurrentGoogleAPI As Long = DateDiff(DateInterval.Second, firefoxEpochDate, DateTime.UtcNow)
    Dim xmldoc As XmlDocument = New XmlDocument()
    Dim results2 As String = wc.DownloadString("https://maps.googleapis.com/maps/api/timezone/xml?location=" & lat & "," & lon & "&timestamp=" & s_CurrentGoogleAPI)
    xmldoc.LoadXml(results2)
    Dim tz_offset_hours As Double = (Convert.ToDouble(xmldoc.DocumentElement.Item("raw_offset").InnerText) + Convert.ToDouble(xmldoc.DocumentElement.Item("dst_offset").InnerText)) / 3600
End Sub