如何将 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
,因为 ZoneOffset
是 ZoneId
的子 class。 ZoneId
是现代的 Java class 来表示时区。
我在使用 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
,因为 ZoneOffset
是 ZoneId
的子 class。 ZoneId
是现代的 Java class 来表示时区。