【问题标题】:how to convert facebook's userinfo timzone field to Time Zone name? [duplicate]如何将 facebook 的 userinfo timzone 字段转换为时区名称? [复制]
【发布时间】:2018-07-22 08:12:19
【问题描述】:

我在使用 oauth2 access_token 后从 facebook 获取用户信息

{
 ...
 "timezone": 5.5,
}

现在我需要将其转换为区域名称以填充 openid 连接区域信息字段。

ex : "Asia/Calcutta"

我从印度请求,在时区地图中我看到 +05:30 是正确的。但 facebook 发布 5.5 我无法解决这个问题。请帮帮我。

【问题讨论】:

  • 首先,偏移量和时区之间没有 1:1 的关系。有多个时区使用相同的偏移量,因此您无法获得给定偏移量的“该”时区。其次,将+05:305.5 相关联的问题究竟是什么? .5 对应于 0.5 * 60 分钟 = 30 分钟应该很明显,不是吗?
  • 嗨@CBroe 是的,我会接受你的建议,我只需要知道,做 0.5*60 是否可以。现在我将使用这种方式。谢谢
  • 这取决于您的编程语言和日期时间 API。安全的赌注是您是否可以将其转换为与 UTC 而不是时区的偏移量。
  • 好的@OleV.V。当然我也会尝试的。谢谢
  • 这个问题有帮助吗? Convert UTC offset to timezone or date

标签: facebook facebook-graph-api timezone timezone-offset


【解决方案1】:

我仍然不知道您使用哪种语言(如果有的话)。这是一个 Java 解决方案:

    long secondsPerHour = TimeUnit.HOURS.toSeconds(1);
    long offsetSeconds = Math.round(5.5 * secondsPerHour);
    if (offsetSeconds < ZoneOffset.MIN.getTotalSeconds()
            || offsetSeconds > ZoneOffset.MAX.getTotalSeconds()) {
        System.out.println("Not a valid UTC offset, is out of range");
    } else {
        ZoneOffset offset = ZoneOffset.ofTotalSeconds((int) offsetSeconds);
        System.out.println(offset);
    }

打印出来

+05:30

你可以在任何需要ZoneId 的地方使用这个sn-p 中的ZoneOffset,因为ZoneOffsetZoneId 的子类。 ZoneId 是代表时区的现代 Java 类。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-01
    • 2016-02-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-17
    相关资源
    最近更新 更多