使用DateTime和PHP 5.2来解决问题

时间:2010-05-24 13:27:10

标签: php php-5.2

我正在尝试在带有PHP 5.2.6的Solaris服务器上使用PHP DateTime类,同时在运行PHP 5.3的本地Windows机器上进行测试。这是代码:

<?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 个答案:

答案 0 :(得分:1)

首先,PHP 5.3会让你在php.ini中设置一个默认时区,这是大多数php 5.2安装完全忽略的。尝试手动设置:

date_default_timezone_set("America/New_York");

另外,对于记录,5.2中有一些DateTime方法缺失(获取/设置时间戳),你可以找到变通方法here