【问题标题】:Calculate total travel time in PHP用 PHP 计算总行程时间
【发布时间】:2013-05-06 13:08:21
【问题描述】:

如何用 PHP 计算总行程时间:

每英里持续时间:00:11:40

总里程:177

总时长:34:25:00

我尝试了不同的方法,但无法完成。

$distance = "177";
$parsetime = strtotime("00:11:40");

$otfrom_string  = time();
$needed = $parstime*$distance;
$otto_string = $otfrom_string+$needed;

echo date("H:i:s",$otfrom_string)."<br />";
echo date("H:i:s",$otto_string)."<br />";

$start = $otfrom_string;
$end = $otto_string;
$elapsed = $end - $start;
echo date("H:i:s", $elapsed);

【问题讨论】:

  • 你得到了什么输出?或者,如果你没有得到任何输出,你会得到什么错误?你认为为什么会这样?
  • 这是输出:2013-05-06 14:37:17 1927-05-06 20:30:37 15:02:04
  • $elapsed 不等于 $needed 吗?

标签: php time duration


【解决方案1】:
$time = '00:11:40';
$distance = 177;

list($h,$m,$s) = explode(':',$time);

$nbSec = $h * 3600 + $m * 60 + $s;
$totalDuration = $nbSec * $distance;

echo nbSecToString($totalDuration);//print 34:00:25


function nbSecToString($nbSec) {

    $tmp = $nbSec % 3600;
    $h = ($nbSec - $tmp ) / 3600;
    $s = $tmp % 60;
    $m = ( $tmp - $s ) / 60;

    $h = str_pad($h, 2, "0", STR_PAD_LEFT);
    $m = str_pad($m, 2, "0", STR_PAD_LEFT);
    $s = str_pad($s, 2, "0", STR_PAD_LEFT);

    return "$h:$m:$s";
}

Demo

【讨论】:

    【解决方案2】:

    strtotime 成功返回时间戳,否则返回 false。我认为您将时间戳乘以 177,这不是计算持续时间的方法。

    我建议你以秒为单位转换你的字符串,然后乘以 177,然后将下面代码的结果添加到当前时间,你得到“到达”时间。

    要将您的字符串转换为秒使用

        $timestr = '00:30:00';   
        $parts = explode(':', $timestr);
        $seconds = ($parts[0] * 60 * 60) + ($parts[1] * 60) + $parts[2];
    

    【讨论】:

      猜你喜欢
      • 2014-07-13
      • 2012-11-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-12-01
      相关资源
      最近更新 更多