我试图在PHP上减去另一个日期,创建一个8小时(08:00:00)的新日期并从之前的结果中减去它。
我使用TIMEDIFF减去前两个日期,然后使用DateTime将其转换为日期格式。
然后我使用date_create创建8小时日期,以便从前一个结果中减去。
问题在于,当我使用TIMEDIFF进行最后一次计算时,它会返回以下消息:
Catchable fatal error: Object of class DateTime could not be converted to string in /Users/renatoaraujo/Documents/wlib compartilhada/wlib/ponto/index.php on line 50
我在哪里错过了?
这是我的代码:
$row = mysqli_query($con, "SELECT TIMEDIFF('".$ponto[0]."','".$ponto[1]."')");
$resultado = mysqli_fetch_array($row);
$datetime = new DateTime($resultado[0]);
$data = date_create('08:00:00');
$row2 = mysqli_query($con, "SELECT TIMEDIFF('".$resultado[0]."', '".$data."'");
$saldo_total = mysqli_fetch_array($row2);
答案 0 :(得分:2)
为什么要查询数据库呢?您可以使用DateTime
完成所需的一切。
你可以这样做:
$start_time = new DateTime();
$eight_hours_before = $start_time->modify('-8 hours');
或者您可以使用DateInterval
。
$start_time = new DateTime();
$eight_hours = new DateInterval('P8H');
$start_time->sub($eight_hours);
答案 1 :(得分:0)
$data
是DateTime
,不是字符串。您需要使用date_format()
将其转换为字符串:
$row2 = mysqli_query($con, "SELECT TIMEDIFF('".$resultado[0]."', '".date_format($data, 'Y-m-d H:i:s)."'");
答案 2 :(得分:0)
如果你的目标是在8小时前创建一个DateTime,那么可以直接在\DateTime constructor中完成。这样的事情: -
$eightHoursAgo = new \DateTime('- 8 hours');