Как установить часовой пояс Laravel Carbon для временных меток?

У меня есть проект, который в основном базируется в регионе CET. Я установил CET в config / app.php, но все временные метки сводки в базе хранятся во времени UTC?

Как я могу установить «глобальный» часовой пояс для временных меток?

я сделал этот тест:

<?php
$timezone = date_default_timezone_get();
echo "The current server timezone is: " . $timezone;
echo "<br />".date('m/d/Y h:i:s a', time());

$mytime = Carbon\Carbon::now();
echo "<br />".$mytime->toDateTimeString();
?>

и вот результат:

The current server timezone is: CET
06/09/2016 12:06:04 pm
2016-06-09 11:06:04

tnx Y


person Yuray    schedule 09.06.2016    source источник
comment
Не ответ на OP, но если вы ищете, как изменить часовой пояс, например. zulu time input, это можно сделать так Carbon\Carbon::parse('2021-01-28T23:45:00.000000Z')->setTimezone('Europe/Brussels')->format('Y-m-d H:i') = ›"2021-01-29 00:45"   -  person PaulH    schedule 28.01.2021


Ответы (6)


Обновить файл config/app.php

Например: 'timezone' => 'Asia/Jerusalem' вместо 'timezone' => 'UTC'

person Adam Pery    schedule 12.07.2019
comment
я думаю, что это ответ на последний Laravel, верно ?? config('app.timezone') повлияет на Carbon часовой пояс, верно? кто-нибудь может это подтвердить? - person Syamsoul Azrien; 09.10.2019
comment
@Syamsoul Azrien Right - person Adam Pery; 15.07.2020
comment
Я бы не рекомендовал это, ЕСЛИ вы уже развернули свое приложение вживую. Глобальное изменение метки времени означает, что он начнет сохранять метки времени в базе данных с обновленной меткой времени, то есть некоторые строки ваших баз данных будут сохранены со старой меткой времени, а другие - с новой ... - person Borislav Itskov; 03.11.2020

в AppServiceProvider.php вы можете добавить функциональность php для изменения метки времени для всего проекта

public function boot()
{
    Schema::defaultStringLength(191);
    date_default_timezone_set('Asia/Aden');
}
person Hisham Shami    schedule 07.06.2018
comment
В Laravel лучше всего изменить параметр timezone из файла config/app.php. - person cespon; 21.02.2019

Вы можете добиться этого с помощью аксессуара

public function getCreatedAtAttribute($value)
{
    return Carbon::createFromTimestamp(strtotime($value))
        ->timezone(Config::get('app.timezone'))
        ->toDateTimeString(); //remove this one if u want to return Carbon object
}
person GONG    schedule 09.06.2016
comment
Это аксессор, а не мутатор, но, тем не менее, я согласен, что лучшая практика здесь (особенно если ваше приложение охватывает часовые пояса или используется в часовом поясе, на который влияют изменения летнего времени) - всегда сохранять даты в UTC и просто изменять часовой пояс, когда дата отображается, а не когда он хранится. - person BlueC; 04.01.2020
comment
Спасибо, это было решением моей проблемы, так как часовой пояс зависел от пользователя, вошедшего в приложение. - person Brec; 09.07.2021

Углерод использует объект PHP по умолчанию DateTime, поэтому используйте функцию date_default_timezone_set (), например: date_default_timezone_set('Europe/London');

person thefallen    schedule 09.06.2016
comment
Это параметр файла php.ini с именем date.timezone = Australia/Melbourne. Спасибо, что указали на функцию. - person Yevgeniy Afanasyev; 27.02.2018

Если вы используете Laravel Carbon TimeStamp, вам нужно изменить часовой пояс в App/Providers/AppServiceProvider.php файле.

// App/Providers/AppServiceProvider.php

public function boot()
{
    date_default_timezone_set('Asia/Calcutta');
}
person Ashwani Garg    schedule 17.07.2019

Похоже, решение - использовать не «CET», а один из явных часовых поясов, например: «Европа \ Минск».

Часовые пояса PHP

Часовые пояса в Laravel 4

person Yuray    schedule 09.06.2016