首页 > 解决方案 > 在非对象错误上调用成员函数 getTimestamp()

问题描述

我正在尝试执行计算,使用 if 语句检查日期是否在其他两个日期之间,日期格式正确,但我似乎仍然遇到时间戳错误。任何有关我如何修复它的帮助将不胜感激。

$Query = mysqli_query($con, "SELECT * FROM tblrental WHERE `CARID` = '".$Car."'");
$row3 = mysqli_fetch_assoc($Query);
$ARTakeOut = $row3\['TakeOutDate'\];
$ARReturn = $row3\['ReturnDate'\];
$ARDaysRented = $row3\['DaysRented'\];
$ARDaysRented = (round($ARDaysRented/2));
$MidDate = date('Y-m-d', strtotime($ARTakeOut . ' + '.$ARDaysRented.' days'));

echo $MidDate; ?> <br> <?PHP
echo $ARTakeOut; ?> <br> <?PHP
echo $ARReturn; ?> <br> <?PHP




if (
  $MidDate->getTimestamp() > $ARTakeOut->getTimestamp() && 
  $MidDate->getTimestamp() < $ARReturn->getTimestamp()){
  echo "is between";
}else{
   echo "NO GO!";  
}

在此处输入图像描述

标签: phpdatedatetimetimestamp

解决方案


$MidDate$ARTakeOut并且$ARReturn都是字符串($MidDate作为输出,date其他来自数据库读取),而不是DateTime对象。DateTime如果要使用,则需要将它们变成对象getTimeStamp

$ARTakeOut = new DateTime($row3['TakeOutDate']);
$ARReturn = new DateTime($row3['ReturnDate']);
$ARDaysRented = $row3['DaysRented'];
$ARDaysRented = (round($ARDaysRented/2));
$MidDate = clone $ARTakeOut;
$MidDate->modify("+ $ARDaysRented days");

echo $MidDate->format('Y-m-d'); ?> <br> <?PHP
echo $ARTakeOut->format('Y-m-d'); ?> <br> <?PHP
echo $ARReturn->format('Y-m-d'); ?> <br> <?PHP

3v4l.org 上的演示

注意我已经删除了\[]s之前的多余部分


推荐阅读