我正在开发rails项目,其中包含搜索用户。 每个用户都有:
我正在寻找获取用户当地时间或时区的最快捷方式。
我的想法:
通过google api获取城市坐标,然后通过voordinates获取时区
使用其他特定的其他API获取时区
但是这种想法的实现并不是长期请求/响应延迟的原因......所以它不适合我。
问题:
是否存在某些Exchange API以通过电子邮件获取用户的时区?
您能否告诉我更好的方法(JS,RoR或EWS API方式)来获取用户 时区?
谢谢!
答案 0 :(得分:1)
您可以尝试通过我们的新API解决此问题
curl -s 'https://api.teleport.org/api/cities/?search=Tallinn,%20Estonia&embed=city:search-results/city:item/city:timezone/tz:offsets-now' | jq '._embedded."city:search-results"[0]._embedded."city:item"._embedded."city:timezone"'
这将在Teleport API上搜索城市匹配'塔林,爱沙尼亚'并将获取结果的时区信息。
我使用./jq来解析它,结果如下:
{
"_embedded": {
"tz:offsets-now": {
"_links": {
"self": {
"href": "https://api.teleport.org/api/timezones/iana:Europe%2FTallinn/offsets/?date=2015-09-07T11%3A41%3A00Z"
}
},
"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%3A41%3A00Z"
}
},
"iana_name": "Europe/Tallinn"
}
答案 1 :(得分:0)
我的算法:
如果在TimezoneDictionary中找不到时区值,请向Google API请求时区,并将其保存到TimezoneDictionary:
请求坐标当我们有时区价值("欧洲/基辅"例如)时,我们可以通过ActiveSupport获得当地时间:
local_time = Time.now.in_time_zone "Europe/Kyiv"
P.S。我为这个问题创建了一个宝石which_time(按城市名称获取时区/时间),所以如果你有这个愿望 - 请使用它:)。我将非常感谢拉取请求。