在网上查资料查到了每小时的生成方法,如下: 但是我把 3600 改成了 1800 如果写 i+= 1800; 格式 就只能查到当前的分, 我需要的是 00:00 00:30 01:00 01:30 ... 这样的格式,我现在只能做到 00:02 00:32 ...
这样。。 求教。 代码如下
$now = time();
$start = strtotime('-1 days');
for ($i=$start; $i<=$now; $i+=1800) {
$start_date = date('Y-m-d H', $i);
$end_date = date('Y-m-d H', $i);
$mdate = date('H:i', $i);
$data[$mdate] = 数据查询;
}
得到的 $mdate 是我上面说的格式。。
我所需要的是整点 和 30 分钟的,我该如何去写?
1
jugelizi 2019-01-27 00:36:21 +08:00 1
$start 取错了
|
2
allenhu 2019-01-27 00:37:29 +08:00 via Android
脑子真是个好东西
|
3
Steps OP |
4
Steps OP 我是这样想的,
24 小时的就显示出 48 组数据,每组 半小时, 7 天的就显示 42 组,每组 6 小时, 30 天就显示 30 组,每组一天为时段。 我该如何去操作? |
5
boks 2019-01-27 00:49:46 +08:00 1
$now = time();
$start = strtotime('-1 days'); $start -= ($start % 1800); ... |
8
boks 2019-01-27 01:13:51 +08:00 1
$now = time();
$Range = '30'; $map = [ '1' => 1800, '7' => 3600 * 6, '30' => 3600 * 24, ]; $start = strtotime("-{$Range} days"); $start -= $start % $map[$Range]; for ($i=$start; $i<=$now; $i+=$map[$Range]) { $start_date = date('Y-m-d H', $i); $end_date = date('Y-m-d H', $i); $mdate = date('Y-m-d H:i', $i); $data[$mdate] = '数据查询'; } var_dump($data); |
9
SwordImmortal 2019-01-27 01:16:00 +08:00 via iPhone 1
2 楼专业喷子吗
|
10
xiaotuzi 2019-01-27 01:17:25 +08:00 via iPhone 1
随时间每 30 分钟执行一次统计就行了。你这个写的是查询历史数据统计…当然是轮询写 SQL 查询得结果了…
|
12
Steps OP @boks #8 再问一下,我的 sql 应该 怎么写 日期来查询?
``` SELECT * FROM `logs` WHERE time > '2019-01-26 01:00' AND time < '2019-01-26 01:30'; ``` 查询这里日期 我不晓得该怎么去写。。。 |
13
KasuganoSoras 2019-01-27 04:31:41 +08:00
https://github.com/kasuganosoras/SomeCodes/blob/master/v2ex_530931.php
善于思考 另外你完全可以用 while(true) 配合 sleep 实现每 30 分钟查询一次 SQL,没必要这样 |
14
Steps OP @KasuganoSoras #12 可是我的日志在数据库里啊,
|
15
Steps OP @KasuganoSoras #12 7 楼 的代码已经帮我解决大部分的问题了,只是 查询语句 开始日期和结束日期 还不能写对。
|
16
Steps OP @boks #7
@KasuganoSoras #12 ``` $start_date = date('Y-m-d H:i:s', $i); $end_date = date('Y-m-d H:i:s', $i + ( $map[$Range] ) ); ``` 已经解决了 |