2015-08-09 35 views
6

Bir sunucu klasörüne bir günlük yazdırmak için bir kod yaptım, bu günlüğü saatlerce de bir tarih döndürür, ancak sunucu benim milimde değil, saat benim için yanlıştır. Aslında bu benim kodum:DateTime nesnesiyle saat dilimi nasıl ayarlanır?

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

İtalya için doğru saat nasıl ayarlanır?

cevap

2

bakış DateTimeZone

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

$ Tarih-> biçimi ('D-m-Y, H: i: s'); aynı zamanda geçerli mi? Günlüğünde –

+0

numaranızda hiçbir şey yazılmadığı için evet geçerli, btw'yi nasıl kaydediyorsunuz? –

+0

Günlük dosyam, belirli bir mevsimin güncelleme saatini $ value ['caption'] parametresi tarafından tanınıyor. Kodu localhost'ta denedim ve dosya oluşturuldu, ancak openshift sunucusunda bu kod çalışmıyor. –

1

de Sen http://php.net/manual/en/datetime.settimezone.php bu konuda daha fazla buradan okuyabilirsiniz setTimezone fonksiyonu

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

ile

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

veya sonrası ikinci argüman olarak yapıcı bunu ayarlayabilirsiniz

+0

Bu, alakasız bir sorundur ve DateTime nesnesindeki saat dilimi ayarının bununla hiçbir ilgisi yoktur. –

2

Ayrıca örneğin gibi dosyanızın üst kısmında yapabilirsiniz: PHP saat dilimleri ile çalışma

date_default_timezone_set('Europe/Rome');

0

oldukça kolaydır. Aşağıda bir örnek aşağıdaki gibidir:

// 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"; 

Referans:

PHP Manual - DateTimeZone

İlgili konular