如何从2日期PHP获取日子

时间:2016-05-10 15:36:03

标签: php html date compare dreamweaver

您好我想尝试两个约会之间的日子。 这是我的编码:

<?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?

的副本

我在这里遇到了不同的问题,我是否需要提前申报?

1 个答案:

答案 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