如何解决以下错误:
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);
}
}
我该如何解决这个问题?
答案 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