如何获得一个时区从一个位置使用纬度和经度坐标?

4c8rllxm  于 2021-06-26  发布在  Hive
关注(0)|答案(17)|浏览(591)

给定一个地点的经纬度,如何知道该地点的时区?
在大多数情况下,我们寻找的是iana/olson时区id,尽管有些服务可能只返回utc偏移量或其他一些时区标识符。有关详细信息,请阅读时区标记信息。

xn1cxnb4

xn1cxnb416#

我们teleport刚刚开始开放api,其中一个用例还公开了坐标的tz信息。
例如,可以通过以下方式请求所有可用的tz坐标信息:

curl -s https://api.teleport.org/api/locations/59.4372,24.7453/?embed=location:nearest-cities/location:nearest-city/city:timezone/tz:offsets-now | jq '._embedded."location:nearest-cities"[0]._embedded."location:nearest-city"._embedded."city:timezone"'

这将返回以下内容

{
  "_embedded": {
    "tz:offsets-now": {
      "_links": {
        "self": {
          "href": "https://api.teleport.org/api/timezones/iana:Europe%2FTallinn/offsets/?date=2015-09-07T11%3A20%3A09Z"
        }
      },
      "base_offset_min": 120,
      "dst_offset_min": 60,
      "end_time": "2015-10-25T01:00:00Z",
      "short_name": "EEST",
      "total_offset_min": 180,
      "transition_time": "2015-03-29T01:00:00Z"
    }
  },
  "_links": {
    "self": {
      "href": "https://api.teleport.org/api/timezones/iana:Europe%2FTallinn/"
    },
    "tz:offsets": {
      "href": "https://api.teleport.org/api/timezones/iana:Europe%2FTallinn/offsets/{?date}",
      "templated": true
    },
    "tz:offsets-now": {
      "href": "https://api.teleport.org/api/timezones/iana:Europe%2FTallinn/offsets/?date=2015-09-07T11%3A20%3A09Z"
    }
  },
  "iana_name": "Europe/Tallinn"
}

例如,我使用./jq进行json解析。

xwbd5t1u

xwbd5t1u17#

下面介绍如何使用google的脚本编辑器在gsheet中获取timezonename和timezoneid。

第一步。获取google时区api的api密钥
第二步。创建新的gsheet。在“工具”菜单下,单击“脚本编辑器”。添加以下代码:

function getTimezone(lat, long) {  
  var apiKey = 'INSERTAPIKEYHERE'
  var url = 'https://maps.googleapis.com/maps/api/timezone/json?location=' + lat + ',' + long + '&timestamp=1331161200&key=' + apiKey 
  var response = UrlFetchApp.fetch(url);
  var data = JSON.parse(response.getContentText());
  return data["timeZoneName"];
}

第三步。保存并发布您的 getTimezone() 功能并按上图所示使用。

相关问题