HH:MM到秒

时间:2011-09-11 16:17:47

标签: php utc strtotime

我正在使用API​​函数返回估计的到达时间hh:mm left,即。 0:31离开,直到抵达。

我要做的是将返回的hh:mm添加到当前时间,因此最终结果是估计到达UTC的时间。

我目前有一个非常简单的脚本,按原样运行,但由于API函数的格式为hh:mm和strtotime似乎无法识别添加或减去除整数之外的任何内容,如果在下面这不起作用使用+ hh:mm替换+07的脚本。

<?php

$time = strtotime("now +07 hours");

print gmdate('H:i T', $time);

?>

所以我的最终结果应该是UTC中的ETA:

3 个答案:

答案 0 :(得分:3)

如果您将strtotime参数更改为now +07 hours, +06 minutes,则应该可以添加它们。要将小时和分钟分开,只需使用explode(':', $returnedString)

即可
$returnedString = '07:06';
$returnedTime = explode(':', $returnedString);

$time = strtotime("now +{$returnedTime[0]} hours, +{$returnedTime[1]} minutes");
// Or this
// $time = strtotime('now +' . $returnedTime[0] . ' hours, +' . $returnedTime[1] . ' minutes');

print gmdate('H:i T', $time);

答案 1 :(得分:3)

更灵活的方式:

<?php
function getETA($arrival, $timezone='UTC', $format='H:i T')
{
    list($hours,$minutes) = explode(':', $arrival);

    $dt = new DateTime('now', new DateTimeZone($timezone));
    $di = new DateInterval('PT'.$hours.'H'.$minutes.'M');
    $dt->add($di);

    return $dt->format($format);
}
?>

用法:

<?php
    echo getETA('07:10');
    echo getETA('07:10', 'America/New_York', 'h:i a T');
?>

示例输出:

23:56 UTC
07:56 pm EDT 

答案 2 :(得分:2)

<?php
$str  = "17:26";
$secs = (substr($str, 0, 2) * 3600) + (substr($str, 3, 2) * 60);

echo $secs;
// Output: 62760
?>