【问题标题】:Troubles with DateTime and PHP 5.2DateTime 和 PHP 5.2 的问题
【发布时间】:2010-05-24 13:27:10
【问题描述】:

我正在尝试在具有 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 ( )

【问题讨论】:

    标签: php php-5.2


    【解决方案1】:

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

    date_default_timezone_set("America/New_York");
    

    另外,作为记录,5.2 中缺少一些 DateTime 方法(获取/设置时间戳),您可以找到解决方法here

    【讨论】:

    • 我知道缺少的方法 - 我一直在避免它们。不幸的是,设置默认时区没有任何区别:(
    • 只是出于好奇,您是否真的测试过该类不起作用?您是否比较了它们的实际功能?空转储并不一定意味着它不工作...... :)
    • 老实说,我不确定我是否理解或知道如何执行您所描述的操作。
    • 我很密集,课程实际上正在工作,就像它是 5.2 一样,它是不完整的。
    猜你喜欢
    • 2011-07-20
    • 1970-01-01
    • 2011-05-07
    • 1970-01-01
    • 2010-11-25
    • 2012-11-04
    • 2011-05-01
    相关资源
    最近更新 更多