php 在列表中突出显示比当前时间早20分钟的时间

00jrzges  于 2023-06-20  发布在  PHP
关注(0)|答案(1)|浏览(115)

我有一个表,上面有公交车的时间,我想突出显示下一次20分钟内的时间。
每个公交时间都存储在一个php变量中,我正在努力解决如何检查每个变量。
下面是HTML/PHP:

<tr>
  <?php if(have_rows('departure_times')): while(have_rows('departure_times')): the_row();
  $stop_time = get_sub_field('time'); //This returns "H:i" ?>
    <td class="time">
      <span><?= $stop_time; ?></span>
    </td>
  <?php endwhile; endif; ?>
</tr>

这是一个repeater,所以它循环并为每个“停止时间”创建一个td。
以下是我目前的JS(不工作):

var now = new Date.now();
var stop = new Date(' . $stop_time . ').getTime();
var slots = document.getElementsByClassName('time');

for(var i = 0; i < slots.length; i++){
  if ( stop < now ){
    slots[i].style.backgroundColor = "green";
  }
}

我只是想看看在这个例子中,止损点是否比现在早。
我觉得这是新的约会。$stop_time。“).getTime();不工作的部分,我不知道如何检查它的输出是什么-它是unix时间戳吗?我想应该是的,但我不确定。我不知道我是否应该做一些不同的事情,因为php的中继器-如果var stop是一个数组,我得到这是行不通的!
任何建议都非常感谢。

km0tfn4u

km0tfn4u1#

我做错了两件事:
1.尝试在“停止时间”循环之外运行脚本
1.没有正确插入'停止时间' php
下面是工作代码:

<?php if(have_rows('departure_times')): while(have_rows('departure_times')): the_row(); $stop_time = get_sub_field('time'); ?>
  <td class="time">
    <span>
      <script>
      var now = new Date().getTime() + 60 * 60 * 1000; //Add extra hour for BST
      var stop = '<?= strtotime($stop_time); ?>000'; //Add the missing millisecond digits
      var mins = 20 * 60 * 1000; //Mins in milliseconds
      if(stop >= (now - mins) && stop <= now){
        document.write('<i class="soon"></i>');
      }
      </script>
      <?php echo $stop_time; ?>
    </span>
  </td>
<?php endwhile; endif; ?>

相关问题