如何按城市代码查找时区?

Posted

技术标签:

【中文标题】如何按城市代码查找时区?【英文标题】:How can i find timezone by citycode? 【发布时间】:2019-04-18 10:39:10 【问题描述】:

我对时区缺乏了解,因为我从不转换时区。 我有一个项目要求我通过他们的城市代码将我们的客户来源时区转换为我的服务器时区。

我无法通过谷歌搜索找到其他任何地方。 我发现正在使用

TimeZoneInfo.FindSystemTimeZoneById("其他时间")。

但我需要的是像

TimeZoneInfo.FindTimeZoneByCityCode("DAM")

大马士革时区。

有什么办法或建议吗?任何建议将不胜感激。

对不起,我的英语不好

【问题讨论】:

Dim tmz = TimeZoneInfo.FindSystemTimeZoneById("Syria Standard Time") Dim ts As TimeSpan = tmz.BaseUtcOffset If (tmz.SupportsDaylightSavingTime AndAlso tmz.IsDaylightSavingTime(Date.Now)) Then ts = ts.Add(New TimeSpan(1, 0, 0)) End If。这是大马士革当前时间 (+03:00:00) 的 UTC 偏移量。 没有通过城市代码获取时区的内置功能,但我建议也许在网上找到一个模板,创建你自己的字典,所以当你输入说“DAM”时,它会在字典,看看它是叙利亚标准时间等。如果您提供更多信息,我们可以尝试帮助,例如让我们知道其他 patrs 代码是什么,或者您是否正在使用数据库,因为如果是这样,可以从客户端执行某种时间戳或类似操作 可以用Dim tmzs = TimeZoneInfo.GetSystemTimeZones().Where(Function(t) t.DisplayName.Contains("Damascus")).FirstOrDefault()提取相同的TimeZoneInfo 可用于时区查询的 Google API:Web Services: Time Zone API, Developer Guide。 嗨,亚当。请更具体地说明“城市代码”的含义。您是否引用了特定的标准?例如,这些是IATA Airport codes?(如果是,则为read this。)还是其他? 【参考方案1】:

您可以使用 Bing API 从提供的地址部分获取时区

Private Function GetTimeZone(ByVal Loc As String) As String
    Dim key As String = "YourBingKeyHere"
    Dim webClient As New Net.WebClient
    Dim result As String = webClient.DownloadString("http://dev.virtualearth.net/REST/v1/TimeZone/" & Loc & "?o=xml&key=" & key)
    Dim xmlDoc As New Xml.XmlDocument()
    xmlDoc.LoadXml(result)
    Dim xmlNodeRdr As New Xml.XmlNodeReader(xmlDoc)
    Dim DS As New DataSet
    DS.ReadXml(xmlNodeRdr, XmlReadMode.InferSchema)
    If DS.Tables.Contains("TimeZone") Then
        If DS.Tables("TimeZone").Rows.Count > 0 Then
            Dim Drow() As DataRow = DS.Tables("TimeZone").Select("Abbreviation IS NOT NULL")
            Dim TimeZoneDataRow As DataRow = Drow(0)
            Dim TimeZone As String = TimeZoneDataRow("Abbreviation").ToString
            Return TimeZone
        Else
            Return Nothing
        End If
    Else
        Return Nothing
    End If
End Function

用法:

Private Sub ButtonGetTimeZone_Click(sender As Object, e As EventArgs) Handles ButtonGetTimeZone.Click
    MsgBox(GetTimeZone("29910"))
End Sub

【讨论】:

以上是关于如何按城市代码查找时区?的主要内容,如果未能解决你的问题,请参考以下文章

获取iOS时区中的城市和国家/地区列表

按城市查找位置的最佳做法

在给定城市的其他城市获得时间开始

使用地理位置查找最近的城市

如何将表单(国家/城市)中的字符串时区转换为 datetime.tzinfo

24个时区的代表城市