DateTime ve PHP 5.2 ile sorun

1 Cevap php

PHP 5.3 çalıştıran benim yerel, Windows kutusunu test ederken, PHP 5.2.6 ile Solaris sunucu üzerinde PHP DateTime sınıfını kullanmak çalışılıyor. İşte kod:

<?php
try {
$dt = new DateTime('2009-10-08');
$dt->setDate(2009,10,8);
print_r($dt);
}catch (Exception $e) {
    echo $e->getMessage();
}

Test sunucusu üzerinde, işler sorunsuz çalışacak, bu baskılar ne:

DateTime Object ( [date] => 2009-10-08 00:00:00 [timezone_type] => 3 [timezone] => America/New_York )

Bunu kullanmak için gereken sunucu üzerinde, ancak bu baskılar ne:

DateTime Object ( )

SetDate Çıkarma olursa olsun hiç fark etmez.

Neden herhangi bir fikir oluyor olabilir?

Teşekkürler!

Edit

Senaryoyu Modifiye:

try {
echo '|', date_default_timezone_get(), '|';
date_default_timezone_set('America/New_York');
echo '|', date_default_timezone_get(), '|';
$dt = new DateTime('2009-10-08');
$dt->setDate(2009,10,8);
print_r($dt);
}catch (Exception $e) {
    echo $e->getMessage();
}

Sunucuda yeni çıktı:

|US/Eastern||America/New_York|DateTime Object ( )

1 Cevap

Biri için, PHP 5.3, php.ini en php 5.2 sistemler tamamen görmezden şey varsayılan bir zaman dilimini yapar. elle ayarlamayı deneyin:

date_default_timezone_set("America/New_York");

Ayrıca, kayıt için, 5.2 (get / set zaman damgası) eksik birkaç DateTime yöntemleri vardır, geçici çözümler bulabilirsiniz here