【发布时间】:2020-09-16 02:16:41
【问题描述】:
我将日期和时间分别存储在表的不同列中。所以我正在尝试检查当前时间是否比数据库中的时间早或晚了 30 分钟。
假设我有一个这样存储的日期和时间列表:
日期 | 时间
2020-05-29 00:10:00
2020-05-29 09:00:00
如果我当前的日期是2020-05-28,时间是23:50:00,那么最近的日期和时间应该是第一行2020-05-29, 00:10:00,范围应该是2020-05-28, 23:35:00 - 2020-05-29, 00:35:00
我已经完成了代码,但它只能检测同一日期的时间范围。
$currentTime = time();
$minTime = date("H:i", strtotime('-30 minutes', $currentTime));
$maxTime = date("H:i", strtotime('+30 minutes', $currentTime));
// My query to get the list of date and time on one specific date and populate to $datetimeArr
// $sql = 'SELECT id, date, time FROM table WHERE date = "'.date('Y-m-d').'"';
$datetimeArr = [
[
'date' => '2020-05-29',
'time' => '00:10:00'
],
[
'date' => '2020-05-29',
'time' => '09:00:00'
],
];
foreach ($datetimeArr as $k => $row) {
if($row['time'] >= $minTime && $row['time'] <= $maxTime) {
$nearestDate = $row;
continue;
}
}
所以问题是,如果在新的一天之后的 30 分钟之前,我无法正确获取范围。
【问题讨论】:
-
不要使用字符串,使用
strtotime整数值。也许像strtotime($row['date'] . ' ' . $row['time']) >= time() - 1800 || strtotime($row['date'] . ' ' . $row['time']) <= time() + 1800之类的东西可以根据需要更改操作.. 也可能希望在操作之外存储time以便它在执行期间不计算。 -
@user3783243 试试看,谢谢!
标签: php codeigniter datetime range