2015-08-09 15 views
6

Ho creato un codice che stampa un registro in una cartella del server, questo registro restituisce anche una data con ore ma il server non è nella mia nazione, quindi le ore non sono corrette per me. In realtà questo è il mio codice:Come impostare il fuso orario con l'oggetto DateTime?

$now = new DateTime(); 
$aggiornata = "\r\n" . "Aggiornamento eseguito con successo per: " . $value['caption'] . " DATA: " . $now->format('d-m-Y H:i:s'); 
file_put_contents(getenv('OPENSHIFT_REPO_DIR').'php/log.txt', $aggiornata, FILE_APPEND); 

Come impostare l'ora corretta per l'Italia?

risposta

2

sguardo DateTimeZone

$date = new DateTime('now',new DateTimeZone("Europe/Rome")); 
+0

$ data-> ('d-m-Y H: i: s'); è anche valido? Perché nel log non viene stampato nulla con la tua modifica –

+0

sì è valida, come stai loggando btw? –

+0

Il mio file di registro mostra il tempo di aggiornamento di una determinata stagione riconosciuto dal parametro $ value ['caption']. Ho provato il codice in localhost e il file è stato creato, ma sul server openshift questo codice non funziona. –

1

È possibile impostare nel costruttore come secondo argomento

$date = new DateTime(null, new DateTimeZone('Europe/Rome')); 

o successiva con setTimezone funzione

$date = new DateTime(); 
$date->setTimezone(new DateTimeZone('Europe/Rome')); 

Si può leggere di più su di esso qui http://php.net/manual/en/datetime.settimezone.php

+0

Questo è un problema non correlato e il fuso orario di impostazione nell'oggetto DateTime non ha nulla a che fare con questo. –

2

Si può anche farlo nella parte superiore del del file, come ad esempio:

date_default_timezone_set('Europe/Rome');

0

Lavorare con fusi orari in PHP è abbastanza facile. Sotto segue un esempio:

// Create a new DateTime object 
$date = new DateTime('2000-01-01', new DateTimeZone('Pacific/Nauru')); 

// Output 
echo $date->format('Y-m-d H:i:sP') . "\n"; 

// Change timezone 
$date->setTimezone(new DateTimeZone('Pacific/Chatham')); 

// Output again 
echo $date->format('Y-m-d H:i:sP') . "\n"; 

Riferimento:

Manuale PHP - DateTimeZone

formato
Problemi correlati