2015-02-19 26 views
9

Sto tentando di impostare il fuso orario per una data in un oggetto Carbon. Funziona bene localmente ma sulla mia scatola di produzione continua a darmi l'errore Bad timezone.Formato Fuso orario per Carbon Data

ho provato:

$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'); 

idea del perché si lamenta sulla mia casella di produzione. Non riesci a trovare la documentazione né su quale sia il formato "corretto" per entrare qui. Qualcuno può aiutarmi per favore.

FYI: locale è Windows, e prod è Ubuntu box.

risposta

17

È possibile cambiare il fuso orario con questo:

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

questo formato lavorando bene al mio locale (Ubuntu) e del progetto prod (Redhat).

+1

sono stato attaccato perché ho cercato di impostare fuso orario con createFromTimestamp, anche se accetta secondo param. A quanto pare, Timestamp è sempre in UTC ... –

+0

@ mladen-janjetović puoi mostrarmi il tuo codice, come ci provi? –

+0

se si desidera modificare il formato dell'applicazione, è necessario configurare il componente config/app.timezone come richiesto. –

9

Penso che dovresti fare riferimento allo official php timezone list. Nel tuo caso puoi utilizzare

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

per UTC + 7: 00.

+0

è questo da aggiungere nel file carbon.php o nel controller? –

0

Se non sbaglio, vuoi passare un offset di fuso orario al tuo oggetto Carbon. Se questo è il caso, provare quanto segue:

 //For UTC +7 
     $date->addSeconds(25200); // Time in seconds 
     //For UTC -7 
     $date->addSeconds(-25200); // Time in seconds 
Problemi correlati