如何通过手机,Outlook电子邮件或城市获取用户的当地时间(时区)?

时间:2015-07-01 10:55:35

标签: javascript ruby-on-rails ruby api exchangewebservices

我正在开发rails项目,其中包含搜索用户。 每个用户都有:

  • outlook电子邮件(我可以使用Exchange API)
  • 国家和城市

我正在寻找获取用户当地时间或时区的最快捷方式。

我的想法:

  1. 通过google api获取城市坐标,然后通过voordinates获取时区

  2. 使用其他特定的其他API获取时区

  3. 但是这种想法的实现并不是长期请求/响应延迟的原因......所以它不适合我。

    问题:

    • 是否存在某些Exchange API以通过电子邮件获取用户的时区?

    • 您能否告诉我更好的方法(JS,RoR或EWS API方式)来获取用户 时区?

    谢谢!

2 个答案:

答案 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)

我的算法:

  1. 创建其他模型TimezoneDictionary,例如
  2. 首先检查TimezoneDictionary模型中的时区。
  3. 如果在TimezoneDictionary中找不到时区值,请向Google API请求时区,并将其保存到TimezoneDictionary:

    a)通过Google Geolocation API

    请求坐标

    b)通过Google TimeZone API

  4. 申请时区

    当我们有时区价值("欧洲/基辅"例如)时,我们可以通过ActiveSupport获得当地时间:

    local_time = Time.now.in_time_zone "Europe/Kyiv"
    

    P.S。我为这个问题创建了一个宝石which_time(按城市名称获取时区/时间),所以如果你有这个愿望 - 请使用它:)。我将非常感谢拉取请求。