Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 检查范围时间是否为新的一天之前和之后的30分钟_Php_Codeigniter_Datetime_Range - Fatal编程技术网

Php 检查范围时间是否为新的一天之前和之后的30分钟

Php 检查范围时间是否为新的一天之前和之后的30分钟,php,codeigniter,datetime,range,Php,Codeigniter,Datetime,Range,我将日期和时间分别存储在表中的不同列中。因此,我试图检查当前时间是比数据库中的时间早30分钟还是晚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 我已

我将日期和时间分别存储在表中的不同列中。因此,我试图检查当前时间是比数据库中的时间早30分钟还是晚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;
    }
}
$currentTime=time();
$minTime=日期(“H:i”,标准时间('-30分钟,$currentTime));
$maxTime=date(“H:i”,strotime('+30分钟,$currentTime));
//我的查询用于获取某个特定日期的日期和时间列表,并填充到$datetimeArr
//$sql='从表中选择id、日期和时间,其中date=“”.date('Y-m-d')。”;
$datetimeArr=[
[
“日期”=>“2020-05-29”,
“时间”=>“00:10:00”
],
[
“日期”=>“2020-05-29”,
“时间”=>“09:00:00”
],
];
foreach($datetimeArr作为$k=>$row){

如果($row['time']>=$minTime&&$row['time']]为什么不使用获取数据的mysql查询执行此操作?这将比使用php foreaches简单得多

SELECT * FROM `TABLE` WHERE `time` > DATE_SUB(NOW(), INTERVAL 30 MINUTE) AND `time` < DATE_ADD(NOW(), INTERVAL 30 MINUTE)

这将把日期和时间字段连接成一个datetime。

为什么不使用获取数据的mysql查询呢?这比使用php foreaches要简单得多

SELECT * FROM `TABLE` WHERE `time` > DATE_SUB(NOW(), INTERVAL 30 MINUTE) AND `time` < DATE_ADD(NOW(), INTERVAL 30 MINUTE)

这将把日期和时间字段连接成一个日期时间。

不要使用字符串,使用
strottime
整数值。可能类似于
strottime($row['date'.'。$row['time'])>=time()-1800 | strotime($row['date'.$row['time']))@user3783243将试用,谢谢!不要使用字符串,请使用
strottime
整数值。可能类似于
strottime($row['date'.'。$row['time'])>=time()-1800 | | strotime($row['date'.$row['time']))@user3783243会试用的,谢谢!@user3783243绝对可以。它的代码更简单,工作效率更高。@MitkoDelibaltov日期呢?如果是在新的一天之前或之后30分钟?因为某种原因,我无法将日期和时间合并在一起。@MitkoDelibaltov啊,我明白了。它确实在做这项工作。谢谢你!嗨,Leon,这是hec这是一个奇怪的解决方案,但对你来说应该是可行的。这会将日期和时间像在一起一样进行更改,然后进行检查。从
TableName
中选择*,其中在date\u SUB(现在(),间隔30分钟)和date\u ADD(现在(),间隔30分钟)之间的CONCAT(
date
,“”,
time
)@绝对是用户3783243。它的代码更简单,工作效率更高。@MitkoDelibaltov日期呢?如果是在新的一天之前或之后的30分钟?因为某种原因,我无法将日期和时间合并在一起。@MitkoDelibaltov啊,我明白了。它实际上在做这项工作。谢谢!嗨,Leon,这是一个非常奇怪的解决方案,但应该是这样的为您工作。这会将日期和时间像在一起一样连续,然后进行检查。从
TableName
中选择*,其中在date\u SUB(现在(),间隔30分钟)和date\u ADD(现在(),间隔30分钟)之间的CONCAT(
date
,“”,
time