您好我想尝试两个约会之间的日子。 这是我的编码:
<?php
$Cur_date = date("Y-m-d");
$Warranty = intval($row_Recordset1['Hardware_warranty']);
$timestamp = strtotime($row_Recordset1['Pur_date']);
$newtimestamp = strtotime("+".$Warranty." years", $timestamp);
$newtimestamp = date('Y/m/d', $newtimestamp) ;
if($Cur_date< $newtimestamp)
{
$interval = $Cur_date->diff($newtimestamp);
echo "Valid"."\n\n\n".$interval->y . " years, " . $interval->m." months, ".$interval->d." days "." left";
}
else if ($Cur_date > $newtimestamp)
{
echo "Expired" ;
}
?>
但出现了错误:
致命错误:在第155行的C:\ xampp \ htdocs \ Warranty \ WarrantyStatus.php中调用字符串上的成员函数diff()
请帮助我谢谢
不是How to calculate the difference between two dates using PHP?
的副本我在这里遇到了不同的问题,我是否需要提前申报?
答案 0 :(得分:2)
你的$ Cur_date变量不是DateTime类的一个实例,它只是一个标准字符串,因此它不包含diff()方法。
尝试将声明更改为:
$Cur_date = new DateTime("Y-m-d");
此外,为了在$ newtimestamp上使用diff()方法,您还需要将$ newtimestamp转换为DateTime对象。为了使用&#34; now&#34;以外的日期和时间,您应该使用DateTime :: createFromFormat()静态方法。
在你的情况下,它看起来像这样:
$Warranty = intval($row_Recordset1['Hardware_warranty']);
$timestamp = strtotime($row_Recordset1['Pur_date']);
$newtimestamp = strtotime("+".$Warranty." years", $timestamp);
$newtimestamp = DateTime::createFromFormat('Y/m/d', $newtimestamp);
此时,您应该能够比较两个DateTime对象,并按预期使用diff()方法。由于您使用的是diff()方法,因此您也可以使用&#34; days&#34;生成的$ interval而不是&#34; d&#34;的属性。它取决于你。
另见:
http://php.net/manual/en/datetime.diff.php
http://php.net/manual/en/datetime.createfromformat.php