Laravel 将数据从mysql解析为carbon对象,然后转换为本地时区

Laravel 将数据从mysql解析为carbon对象,然后转换为本地时区,laravel,laravel-4,php-carbon,Laravel,Laravel 4,Php Carbon,这个时区真是个噩梦。我将所有值作为UTC存储在数据库中。我想做的是构建一个函数,返回本地时区中的DateTime字符串。由于我使用的是Laravel,所以我想使用碳来完成这项工作。我已经试过多次了,但都失败了 $dateasstring='2014-01-05 12:00:00'//从数据库检索 这个日期是UTC。如何将其解析为UTC转换为Carbon,然后告诉Carbon将时间转换为localtimezone?我遗漏了什么吗?这是我使用的解决方案。我使用on函数生成UTC日期(toutc),

这个时区真是个噩梦。我将所有值作为UTC存储在数据库中。我想做的是构建一个函数,返回本地时区中的DateTime字符串。由于我使用的是Laravel,所以我想使用碳来完成这项工作。我已经试过多次了,但都失败了

$dateasstring='2014-01-05 12:00:00'//从数据库检索


这个日期是UTC。如何将其解析为UTC转换为Carbon,然后告诉Carbon将时间转换为localtimezone?我遗漏了什么吗?

这是我使用的解决方案。我使用on函数生成UTC日期(toutc),并使用一个函数将其切换回本地时间(tolocal)。在用户登录期间,我设置了会话变量“timezone”

$carbon = new Carbon\Carbon($dateasstring);
$local = $carbon->timezone($localTimeZone);

// example from artisan tinker:
[1] > $utc = new Carbon\Carbon('2014-01-05 12:00:00');
// object(Carbon\Carbon)(
//   'date' => '2014-01-05 12:00:00',
//   'timezone_type' => 3,
//   'timezone' => 'UTC'
// )
[2] > $warsaw = $utc->timezone('Europe/Warsaw');
// object(Carbon\Carbon)(
//   'date' => '2014-01-05 13:00:00',
//   'timezone_type' => 3,
//   'timezone' => 'Europe/Warsaw'
// )
private function totimezone($utc){
    $usertz = Session::get('timezone');
    $carbon = new Carbon($utc, 'UTC');
    $carbon->timezone = new DateTimeZone($usertz);
    return $carbon;

}

private function toutc($local){
    $usertz = Session::get('timezone');
    $carbon = new Carbon($local, $usertz);
    $carbon->timezone = new DateTimeZone('UTC');
    return $carbon;
}