UTC时间基于时区偏移量

时间:2013-01-30 21:06:17

标签: php datetime

我在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时间,这怎么可能?

1 个答案:

答案 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