2015-02-19 11 views
9

Próbuję ustawić strefę czasową dla daty w obiekcie Carbon. Działa dobrze lokalnie, ale na moim polu produkcyjnym nadal daje mi błąd o wartości Bad timezone.Format strefy czasowej dla daty emisji węglowej

Próbowałem:

$date->setTimezone('7'); 
$date->setTimezone('+7'); 
$date->setTimezone('7:00'); 
$date->setTimezone('+7:00'); 
$date->setTimezone('UTC 7'); 
$date->setTimezone('UTC +7'); 
$date->setTimezone('UTC 7:00'); 
$date->setTimezone('UTC +7:00'); 

Nie mam pojęcia, dlaczego to skarży się na moim polu produkcyjnym. Nie można znaleźć dokumentacji na temat "właściwego" formatu, który należy wprowadzić tutaj. Czy ktoś może ci pomóc.

FYI: local to windows, a prod to pole Ubuntu.

Odpowiedz

17

można zmienić strefę czasową z tym:

$timestamp = '2014-02-06 16:34:00'; 
$date = Carbon::createFromFormat('Y-m-d H:i:s', $timestamp, 'Europe/Stockholm'); 
$date->setTimezone('UTC'); 

Format ten działa poprawnie na moim lokalnym (Ubuntu) i prod projektu (RedHat).

+1

utknąłem bo próbowałem ustawić strefę czasową z createFromTimestamp, nawet jeśli akceptuje drugiego param. Najwyraźniej znacznik czasu jest zawsze w UTC ... –

+0

@ mladen-janjetović czy możesz pokazać mi swój kod, jak próbujesz? –

+0

Jeśli chcesz zmienić format aplikacji, powinieneś skonfigurować komponent config/app.timezone zgodnie z wymaganiami. –

9

Myślę, że powinieneś zapoznać się z official php timezone list. W twoim przypadku możesz użyć

$date->setTimezone('Asia/Phnom_Penh'); 

dla UTC + 7: 00.

+0

czy należy to dodać do pliku carbon.php, czy do kontrolera? –

0

Jeśli się nie mylę, chcesz przekazać przesunięcie strefy czasowej do swojego obiektu węglowego. Jeśli to przypadek, spróbuj wykonać następujące czynności:

 //For UTC +7 
     $date->addSeconds(25200); // Time in seconds 
     //For UTC -7 
     $date->addSeconds(-25200); // Time in seconds 
Powiązane problemy