如何从同一HTML表的第一行减去第二行值

时间:2019-02-01 07:25:11

标签: php html

我正在努力处理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;?>

4 个答案:

答案 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