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

Php 如何将Facebook时区转换为自定义字符串,php,facebook,timezone,Php,Facebook,Timezone,我正在我的应用程序中集成facebook Facebook以类似印度的格式返回用户时区 5.5 但现有的时区以格式保存在数据库中 +05:30 此转换的任何函数或算法建议 谢谢 Easy peasy(假设$a=5.5): 第一位是-或+符号(左/右时区),第二位是$a到(int),你失去了小数部分,第三位首先得到小数部分(我肯定有一个php函数,但我来自C,所以基本上是:5.5-(int)5.5=5.5-5=0.5)。分数部分以小时表示(5.5小时是5小时30分钟),因此基本上0.5*60

我正在我的应用程序中集成facebook

Facebook以类似印度的格式返回用户时区

5.5
但现有的时区以格式保存在数据库中

 +05:30
此转换的任何函数或算法建议

谢谢

Easy peasy(假设$a=5.5):

第一位是-或+符号(左/右时区),第二位是$a到(int),你失去了小数部分,第三位首先得到小数部分(我肯定有一个php函数,但我来自C,所以基本上是:5.5-(int)5.5=5.5-5=0.5)。分数部分以小时表示(5.5小时是5小时30分钟),因此基本上0.5*60以分钟表示分数部分

编辑:这里有一个更干净的(一行)版本:

这是最简单的。感谢inhan指出abs()的细节:)

轻松获得(假设$a=5.5):

第一位是-或+符号(左/右时区),第二位是$a到(int),你失去了小数部分,第三位首先得到小数部分(我肯定有一个php函数,但我来自C,所以基本上是:5.5-(int)5.5=5.5-5=0.5)。分数部分以小时表示(5.5小时是5小时30分钟),因此基本上0.5*60以分钟表示分数部分

编辑:这里有一个更干净的(一行)版本:


这是最简单的。感谢inhan指出abs()的细节:)

这个有点长,但如果需要的话,它会添加必要的前导零等

$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
$num=-5.5;
$res=($num<0?'-':'+')。(abs($num)<10?'0':''。abs((int)$num)。':';
// --> -05:
$mins=圆形((abs($num)-abs((int)$num))*60);
// --> 30
$res.=($mins<10?'0':'')$分钟;
echo$res;
// -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
$num=-5.5;
$res=($num<0?'-':'+')。(abs($num)<10?'0':''。abs((int)$num)。':';
// --> -05:
$mins=圆形((abs($num)-abs((int)$num))*60);
// --> 30
$res.=($mins<10?'0':'')$分钟;
echo$res;
// -05:30

这里你需要一个abs:
abs((int)$a)
这里还有一个:
abs($a-(int)$a)*60)
这里你需要一个abs:
abs((int)$a)
这里还有一个:
abs($a-(int)$a)*60)
@edioe的建议更干净,不过,如果你不介意前面的零的话。@edioe的建议更干净,如果你不介意前面的零。
$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