![](/img/trans.png)
[英]Which is the custom, by-the-book way to get user local time / time zone? (Or: How might Google / Facebook do it?)
[英]How to convert Facebook time zone to a custom string
我正在应用程序中进行Facebook集成。
Facebook以类似于印度的格式返回用户时区
5.5
但是现有时区以以下格式保存在数据库中
+05:30
此转换的任何功能或算法建议。
谢谢 。
这个有点长,但是如果需要,它会添加必要的前面的零等。
$num = -5.5;
$res = ($num < 0 ? '-' : '+') . (abs($num) < 10 ? '0' : '') . abs((int)$num) . ':';
// --> -05:
$mins = round((abs($num) - abs((int)$num)) * 60);
// --> 30
$res .= ($mins < 10 ? '0' : '') . $mins;
echo $res;
// -05:30
简单容易(假设$ a = 5.5):
$tz = ($a > 0 ? '+' : '-') . ((int) $a) . ':' . (($a - (int)$a)*60)
第一位让您获得-或+号(左/右时区),其次将$ a转换为(int)您失去了小数部分,而第三位则首先获得了小数部分(我敢肯定有一个php函数可以做到这一点,但是我基本上来自C:5.5-(int)5.5 = 5.5-5 = 0.5)。 小数部分以小时表示(5.5小时是5小时30分钟),因此基本上0.5 * 60可以在数分钟内获得小数部分。
编辑:这是一个更清洁(单线)版本:
$time = sprintf("%+03d:%2d", (int)$a, abs($a-(int)$a)*60);
这几乎是最简单的。 感谢inhan指出abs()的详细信息:)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.