You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP数组中相邻行程间隔时间计算问题咨询

解决数组中相邻行程的时间间隔计算问题

看起来你是想计算相邻两个行程之间的空档时间——也就是前一个行程到达后,到下一个行程出发的这段间隔,对吧?你的原代码有点小偏差,我来帮你修正一下。

原代码的问题

你原来的foreach循环是遍历每个行程,计算的是当前行程自己的到达时间和出发时间的差,这其实是单个行程的耗时,不是你要的相邻行程间隔。而且最后一个行程没有下一个出发时间,完全不需要计算它。

修正后的代码方案

这里我用PHP的DateTime类来处理时间,比手动处理时间戳更可靠,也更容易按需格式化结果:

<?php
$data = [
    '0' => [
        'depart' => '2021-02-09 10:50:00',
        'arrival' => '2021-02-09 13:10:00',
    ],
    '1' => [
        'depart' => '2021-02-09 14:50:00',
        'arrival' => '2021-02-09 15:30:00',
    ],
    '2' => [
        'depart' => '2021-02-09 18:20:00',
        'arrival' => '2021-02-09 19:40:00',
    ]
];

$diff_time = [];
// 循环到倒数第二个元素,因为要和下一个行程配对计算
for ($i = 0; $i < count($data) - 1; $i++) {
    // 实例化DateTime对象,方便安全地计算时间差
    $currentArrival = new DateTime($data[$i]['arrival']);
    $nextDeparture = new DateTime($data[$i+1]['depart']);
    
    // 计算时间差,得到包含细分信息的DateInterval对象
    $interval = $currentArrival->diff($nextDeparture);
    
    // 按需格式化时间差,这里提供两种常用方式:
    // 方式1:转为总分钟数
    $totalMinutes = $interval->days * 24 * 60 + $interval->h * 60 + $interval->i;
    $diff_time[$i] = $totalMinutes . ' 分钟';
    
    // 方式2:按"X小时Y分钟"的友好格式显示
    // $diff_time[$i] = "{$interval->h}小时{$interval->i}分钟";
}

// 输出最终结果
print_r($diff_time);
?>

代码说明

  1. 循环范围控制:用for循环代替foreach,循环终止在count($data)-1(倒数第二个元素),避免越界访问不存在的下一个行程。
  2. 时间处理:DateTime是PHP官方推荐的时间处理工具,能自动兼容各种合法时间格式,不会出现时间戳溢出的问题。
  3. 时间差格式化:diff()方法返回的DateInterval对象包含了天、小时、分钟等细分的时间差,你可以根据业务需求自由调整输出格式。

如果你想用自己的timeDifference函数

如果你已经有自己实现的timeDifference函数(假设它接收两个时间字符串并返回时间差),只需要调整循环内的参数传递即可:

$diff_time = [];
for ($i = 0; $i < count($data) - 1; $i++) {
    // 注意参数顺序:前一个行程的到达时间,后一个行程的出发时间
    $diff_time[$i] = timeDifference($data[$i]['arrival'], $data[$i+1]['depart']);
}

这样就能得到你想要的两个目标时间差:

  • $diff_time[0]对应[0]的到达时间与[1]的出发时间的间隔
  • $diff_time[1]对应[1]的到达时间与[2]的出发时间的间隔

内容的提问来源于stack exchange,提问作者Adin Ramdhan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.11 07:59:27