繁体   English   中英

如何将Facebook时区转换为自定义字符串

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM