Дата синтаксического анализа из mysql в углеродный объект, а затем преобразование в местный часовой пояс

этот часовой пояс - настоящий кошмар. Я храню все значения в своей базе данных в формате UTC. Я хотел бы создать функцию, которая возвращает String DateTime в местном часовом поясе. Поскольку я использую Laravel, я хотел бы использовать Carbon для работы. Я пробовал несколько раз и потерпел неудачу.

$dateasstring= '2014-01-05 12:00:00' //retrieved from databse

Это дата по всемирному координированному времени. Как мне разобрать его как UTC в Carbon, а затем сказать Carbon, чтобы он изменил время на местный часовой пояс? Я что-то упускаю?


person Tino    schedule 16.04.2014    source источник


Ответы (1)


Это решение, которое я использую. Я использую функцию on, чтобы установить дату в формате UTC (toutc), и одну функцию, чтобы переключить ее обратно на местное время (tolocal). Во время входа пользователя я устанавливаю переменную сеанса «часовой пояс».

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;
}
person Tino    schedule 17.04.2014