微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

从 C# 中的国家和州名获取时区偏移量

如何解决从 C# 中的国家和州名获取时区偏移量

在 C# 中有没有办法获取给定国家和州的时区偏移量?例如,如果输入是国家 - “加拿大”和州 - “萨斯喀彻温”,那么输出是“-06:00”?

解决方法

如评论中所述,修改 SO 问题的代码如下以获得 latitudelongitude

IEnumerable<string> zoneIds = TzdbDateTimeZoneSource.Default.ZoneLocations
    .Where(x => x.CountryCode == countryCode)
    .Select(x => new { x.Latitude,x.Longitude});

然后,一种方法是使用 Azure Maps API 来获取 Offset 和 Transition 偏移量:

GET https://atlas.microsoft.com/timezone/byCoordinates/json?subscription-key=[subscription-key]&api-version=1.0&options=all&query=47.0,-122

响应示例:

{
  "Version": "2019a","ReferenceUtcTimestamp": "2019-06-17T22:16:59.0765556Z","TimeZones": [
    {
      "Id": "America/Los_Angeles","Aliases": [
        "US/Pacific","US/Pacific-New"
      ],"Countries": [
        {
          "Name": "United States","Code": "US"
        }
      ],"Names": {
        "ISO6391LanguageCode": "en","Generic": "Pacific Time","Standard": "Pacific Standard Time","Daylight": "Pacific Daylight Time"
      },"ReferenceTime": {
        "Tag": "PDT","StandardOffset": "-08:00:00","DaylightSavings": "01:00:00","WallTime": "2019-06-17T15:16:59.0765556-07:00","PosixTzValidYear": 2019,"PosixTz": "PST+8PDT,M3.2.0,M11.1.0","Sunrise": "2019-06-17T05:12:21.267-07:00","Sunset": "2019-06-17T21:05:18.017-07:00"
      },"RepresentativePoint": {
        "Latitude": 34.05222222222222,"Longitude": -118.24277777777778
      },"TimeTransitions": [
        {
          "Tag": "PDT","UtcStart": "2019-03-10T10:00:00Z","UtcEnd": "2019-11-03T09:00:00Z"
        },{
          "Tag": "PST","DaylightSavings": "00:00:00","UtcStart": "2019-11-03T09:00:00Z","UtcEnd": "2020-03-08T10:00:00Z"
        },{
          "Tag": "PDT","UtcStart": "2020-03-08T10:00:00Z","UtcEnd": "2020-11-01T09:00:00Z"
        }
      ]
    }
  ]
}

其次,您可以使用 Google APIs 通过纬度和经度获取当地时间:

    {
      "Version": "2019a","TimeZones": [
        {
          "Id": "America/Los_Angeles","Aliases": [
            "US/Pacific","US/Pacific-New"
          ],"Countries": [
            {
              "Name": "United States","Code": "US"
            }
          ],"Names": {
            "ISO6391LanguageCode": "en","Daylight": "Pacific Daylight Time"
          },"ReferenceTime": {
            "Tag": "PDT","Sunset": "2019-06-17T21:05:18.017-07:00"
          },"RepresentativePoint": {
            "Latitude": 34.05222222222222,"Longitude": -118.24277777777778
          },"TimeTransitions": [
            {
              "Tag": "PDT","UtcEnd": "2019-11-03T09:00:00Z"
            },{
              "Tag": "PST","UtcEnd": "2020-03-08T10:00:00Z"
            },{
              "Tag": "PDT","UtcEnd": "2020-11-01T09:00:00Z"
            }
          ]
        }
      ]
    }

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。