2010-05-24 129 views
0

我試圖在運行PHP 5.3的本地Windows機器上測試PHP 5.2.6的Solaris服務器上使用PHP DateTime類。下面是代碼:日期時間和PHP 5.2的問題

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

在測試服務器上的東西完美的工作,這是打印:

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

在我需要使用它的服務器,但是,這是打印:

DateTime Object () 

刪除setDate沒有任何區別。

任何想法,爲什麼會發生這種情況?

謝謝!

編輯

修改劇本:

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(); 
} 

服務器上的新的輸出:

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

回答

1

原因之一,PHP 5.3讓你設置你的PHP默認的時區。 ini,大多數PHP 5.2安裝完全忽略的東西。嘗試手動設置它:

date_default_timezone_set("America/New_York"); 

而且,備案,也有少數的DateTime方法在5.2(獲取/設置時間戳)丟失,你可以找到變通方法here

+0

我知道缺少的方法 - 我我一直在迴避他們。 不幸的是,設置默認的時區沒有區別:( – 2010-05-24 13:39:26

+0

只是出於好奇心,你真的測試過,類沒有工作嗎?你有沒有比較它們的實際功能?空轉儲並不一定意味着它不工作.. 。:) – 2010-05-24 13:56:52

+0

老實說,我不確定我是否理解或知道如何去做你所描述的。 – 2010-05-24 14:04:22