我正在使用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:
答案 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
?>