如何将 facebook 的 userinfo timzone 字段转换为时区名称?

how to convert facebook's userinfo timzone field to Time Zone name?

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

{
 ...
 "timezone": 5.5,
}

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

ex : "Asia/Calcutta"

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

我仍然不知道你想要哪种语言(如果有的话)。这是一个 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 的地方使用此代码段中的 ZoneOffset,因为 ZoneOffsetZoneId 的子 class。 ZoneId 是现代的 Java class 来表示时区。