我正在努力处理PHP代码,而且不知道如何解决此问题。我有两列带有时间戳的列,这些列是我在用PHP代码生成的HTML表中按desc排序的。
我需要找出第二行StateEndTime和第一行StateStarTtime nd之间的差异,然后将其显示在新的行/列中。决赛桌应该像这样:
ID Type StateStarTtime StateEndTime Min Difference
xxx YYY 03:57 03:59 00:02
xxx ZZZ 03:53 03:55 00:04
xxx ZZZ 03:46 03:49
下面是我的索引文件中的PHP代码
<?php while($row = mysqli_fetch_array($search_result)):?>
<tr>
<td align="Center"><?php echo $row['id'];?></td>
<td align="Center"><?php echo $row['Username'];?></td>
<td align="Center"><?php echo $row['StateStarttime'];?></td>
<td align="Center"><?php echo $row['StateEndtime'];?></td>
<?php endwhile;?>
答案 0 :(得分:0)
<?php
$lasttime = 0;
while($row = mysqli_fetch_array($search_result)):?>
<tr>
<td align="Center"><?php echo $row['id'];?></td>
<td align="Center"><?php echo $row['Username'];?></td>
<td align="Center"><?php echo $row['StateStarttime'];?></td>
<td align="Center"><?php echo $row['StateEndtime'];?></td>
<td align="Center"><?php echo ($row['StateStarttime'] - $lasttime);?></td>
<?php
$lasttime = $row['StateStarttime'];
endwhile;?>
答案 1 :(得分:0)
为此,我建议首先使用结果创建数组,然后使用该数组生成表。代码未经测试。让我知道它是否有效。
<?php for($i = 0; $i < count($results); $i++): ?>
<?php
$datetime1 = DateTime::createFromFormat('i:s', $results[$i]['StateStarttime']);
$datetime2 = DateTime::createFromFormat('i:s', $results[$i+1]['StateEndtime']);
if($datetime2)
$interval = $datetime1->diff($datetime2)->format('%I:%S');
else
$interval = 'unknown';
?>
<tr>
<td align="Center"><?php echo $results[$i]['id'];?></td>
<td align="Center"><?php echo $results[$i]['Username'];?></td>
<td align="Center"><?php echo $results[$i]['StateStarttime']; ?></td>
<td align="Center"><?php echo $results[$i]['StateEndtime']; ?></td>
<td align="Center"><?php echo $interval; ?></td>
</tr>
<?php endfor; ?>
答案 2 :(得分:0)
请创建与2个param通用的方法,返回字符串差异,如下所示
<?php
$checkTime = strtotime('00:03:55');
echo 'Check Time : '.date('H:i:s', $checkTime);
echo '<hr>';
$loginTime = strtotime('00:04:58');
$diff = $checkTime - $loginTime;
echo 'Login Time : '.date('H:i:s', $loginTime).'<br>';
echo ($diff < 0)? 'Late!' : 'Right time!'; echo '<br>';
echo 'Time diff in sec: '. gmdate("i:s", abs($diff));
echo '<hr>';
?>
答案 3 :(得分:0)
我将使用strtotime将$ row ['StateStarttime']和$ row ['StateEndtime']中的时间解析为2个单独的变量,然后打印出差异。像这样:
<?php while($row = mysqli_fetch_array($search_result)):
$startTime = strtotime($row['StateStarttime']);
$endTime = strtotime($row['StateEndtime']);
;?>
<tr>
<td align="Center"><?php echo $row['id'];?></td>
<td align="Center"><?php echo $row['Username'];?></td>
<td align="Center"><?php echo $row['StateStarttime'];?></td>
<td align="Center"><?php echo $row['StateEndtime'];?></td>
<td align="Center"><?php echo $endTime - $startTime;?></td>
<?php endwhile;?>
注意:上面的代码仅是示例,因此未经测试。
祝你好运, Teo