【发布时间】:2021-03-23 15:59:16
【问题描述】:
所以,我正在创建一个预订系统。当我从数据库中检索此预订时,我需要检查当前日期和时间是否更接近实际预订的日期和时间。
在管理仪表板上,管理员指定客户可以提前多长时间进行签到,例如 30 分钟。但这一次可能会有所不同。可以是 1 小时、2 小时、10 分钟。
当我从数据库中得到结果时,我得到的结果是这样的:
$date_schedule = '2021-03-25 15:40:00'; // Can be any date in the future as well;
$time_to_check = '00:30:00'; // Can be '01:05:00', whatever the admins set as time_to_check;
// Expected result
'2021-03-25 15:10:00';
我试过减去这个,但没有成功。这就是我所做的。
$current_date = date("Y-m-d H:i:s");
$booking_date = '2021-03-25 15:00:00'; // From database
$time_to_check = '00:30:00'; // From database
$hours = explode(':', $time_to_check);
$data_check = date($booking_date, strtotime('-' . $hours[0] . ' hour -' . $hours[1] . ' minutes'));
但是有了这个,$data_check 会返回与$booking_date 相同的值,而不是减去时间。
【问题讨论】:
-
这是因为
date函数的第一个参数是format。你给它一个字面日期,这就是它输出的内容,不管后面的时间戳如何。您创建的时间戳会从 当前时间 中减去。使用DateTime类,你可以用modify方法实现同样的事情。 -
这能回答你的问题吗? Subtract 2 hours from time in php
-
副本处理固定数量,但原理相同,您已经展示了如何动态构建修改字符串。