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


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

如何解决的错误

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

我该如何解决此问题?

DateTime::createFromFormat()是在php5.3中引入的。很可能你有一个更老的。因此,安装php>=5.3,您就可以工作了。

您正在运行哪个版本的PHP?根据PHP,createDateFormat的版本>=5.3.0。

--编辑

看起来您的代码使用DateTime不正确,因为createFromFormat返回的是一个对象,而不是字符串,但您应该能够将DateTime::createFromFormat()调用与date()调用互换。

// 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
相关文章:
  • 没有找到相关文章