我在UTC(0)中一直在MySQL中保存,所以我可以在以后显示不同时区用户的时间时更改它们,以便保存到db中,我使用:
function get_utc(){
date_default_timezone_set('UTC');
return date("Y-m-d H:i:s");
}
$now = get_utc();
现在我想将这些时间转换为基于时区偏移的不同时区,我正在使用此功能:
function utc_and_timezone($utc_time, $offset) {
return date("Y-m-d H:i:s", strtotime($offset, strtotime($utc_time)));
}
例如,如果UTC时间是:2013-01-30 21:06:29 在那段时间应用+5时区很容易找到:
$new_time = utc_and_timezone("2013-01-30 21:06:29", "+5 hours"); // Works Fine
它对于像5,6或其他整数的偏移一样可以正常工作,但与其他像+3.5,+ 2.5这样的工作不起作用:
$new_time = utc_and_timezone("2013-01-30 21:06:29", "+5.5 hours"); // NOT WORKING
任何人都知道为什么?! 在不同的时区进行UTC时间的任何更好的解决方案......?
由于
简短问题:
我想在2013-01-30 21:06:29
时区显示+3.5
的UTC时间,这怎么可能?
答案 0 :(得分:6)
在PHP方面,您可以尝试:
$utc_time = '2013-01-30 21:06:29';
$offset = '3.5';
echo date("Y-m-d H:i:s", strtotime($utc_time) + (3600 * $offset) );
//Returns 2013-01-31 00:36:29
$utc_time = '2013-01-30 21:06:29';
$offset = '-5.5';
echo date("Y-m-d H:i:s", strtotime($utc_time) + (3600 * $offset) );
//Returns 2013-01-30 15:36:29
在MySQL方面,你可以使用CONVERT_TZ
:
SELECT CONVERT_TZ('2013-01-30 21:06:29','+00:00','+03:30');
//Returns January, 31 2013 00:56:29+0000
SELECT CONVERT_TZ('2013-01-30 21:06:29','+00:00','-05:50');
//Returns January, 30 2013 15:16:29+0000