致命错误:调用未定义的方法DateTime :: createfromformat()

时间:2012-01-05 20:56:43

标签: php mysql

如何解决以下错误:

Fatal error: Call to undefined method DateTime::createfromformat()

错误发生在第35行。这是我的代码从第31行到第45行读取的内容

// check database for necessary updates

$update = mysql_query("SELECT * FROM rent WHERE colour='#3C0'");
while($row_update = mysql_fetch_array( $update )) {
    $datetime_lower   = DateTime::createFromFormat('d/m/Y', $min);
    $datetime_upper   = DateTime::createFromFormat('d/m/Y', $max);
    $datetime_compare = DateTime::createFromFormat('d/m/Y g:i a', $row_update['pDate']);
    if ($datetime_lower < $datetime_compare && $datetime_upper > $datetime_compare) {
        // date is between do nothing
    } else {
        // date is not between so update
        $update_result = mysql_query("UPDATE rent SET colour='#F0F0F0' WHERE id=" . $row_update['id'] . " && colour='#3C0'");
        mysql_close($update_result);
    }
}

我该如何解决这个问题?

2 个答案:

答案 0 :(得分:21)

DateTime::createFromFormat()在php 5.3中引入。而且很可能你的年龄较大。所以 - 安装php&gt; = 5.3,你就可以了。

答案 1 :(得分:5)

您运行的是哪个版本的PHP?根据{{​​3}},createDateFormat版本可用于&gt; = 5.3.0。

- 编辑

看起来您的代码错误地使用了DateTime,因为createFromFormat返回一个对象而不是字符串,但您应该能够使用PHP()调用转置DateTime :: createFromFormat()调用。

// PHP >= 5.3.0
$datetime_lower   = DateTime::createFromFormat('d/m/Y', $min);
$datetime_upper   = DateTime::createFromFormat('d/m/Y', $max);
$datetime_compare = DateTime::createFromFormat('d/m/Y g:i a', $row_update['pDate']);

// PHP < 5.3.0
$datetime_lower   = date('d/m/Y', $min);
$datetime_upper   = date('d/m/Y', $max);
$datetime_compare = date('d/m/Y g:i a', $row_update['pDate']);

在我看来,如果您正在处理时间戳,您可以进行比较操作而无需转换为特定格式。如果您正在处理的某个日期不是时间戳格式,则可以执行以下操作:

$timestamp = strtotime($yourFormattedDateTime);

// Now with everything in ints, you can do your conditional evals