我在数据库中有记录,如
id Time
1 25-02-2015 18:20
2 25-02-2015 18:25
3 25-02-2015 18:30
4 25-02-2015 18:45
5 25-02-2015 18:50
6 25-02-2015 18:55
我想添加1到3和4到6的时间间隔, 并且只显示两个记录,而不是全部六个记录。
我尝试过但很容易混淆这个简单的(可能是)任务
foreach($list as $i => $listInfo){
if(isset($list[$i+1]['dd_data']))
{
$nexttime = $list[$i+1]['dd_data'] ;
$to_time = strtotime($nexttime);
$from_time = strtotime($listInfo['dd_data']);
$diff = round(abs($to_time - $from_time) / 60,2);
if($diff<=5)
{
$diffsum +=$diff;
}
}else{
$diffsum = '0';
}
if($diffsum>=5 && $diff>=5)
{
?>
<tr class="<?=$class?>">
<td class="<?=$leftBotClass?>"><?=$c++?> <?=$diff?></td>
<td class="td_br_right left"><?php echo $listInfo['dd_data']; ?> Till next <?php echo $diffsum; ?> min </td>
</tr>
<?php
}
}
谢谢
答案 0 :(得分:0)
这可能会对您有所帮助:
SELECT t1.id, t1.time, (t2.time - t1.time) AS time_diff
FROM my_table AS t1 INNER JOIN my_table AS t2 ON t2.id = (t1.id + 1)
答案 1 :(得分:0)
试试这段代码。我希望这可以帮到你。
<?php
$array = array(
array('id'=>'1', 'date'=>'25-02-2015 18:20'),
array('id'=>'2', 'date'=>'25-02-2015 18:25'),
array('id'=>'3', 'date'=>'25-02-2015 18:30'),
array('id'=>'4', 'date'=>'25-02-2015 19:45'),
array('id'=>'6', 'date'=>'25-02-2015 19:50'),
array('id'=>'7', 'date'=>'25-02-2015 20:55')
);
//your given sample array from database
$new_arr=array();
$time1=strtotime($array[0]['date']);
foreach($array as $time)
{
$time2=strtotime($time['date']);
$diff=$time2-$time1;
if($diff>0 && $diff<600) //check 5(600 second) minute difference
{
$time1=strtotime($time['date']);
}
else
{
$new_arr[]=$time;
$time1=strtotime($time['date']);
}
}
foreach ($new_arr as $id => $date)
{
echo $date['date']."<br>"; //display dates
}
?>
输出:
25-02-2015 18:20
25-02-2015 19:45
25-02-2015 20:55