Reputation: 291
I'm using an API function that returns an estimated time of arrival in hh:mm left, ie. 0:31 left until arrival.
What I'm trying to do is add the returned hh:mm to the current time, so the end result is the estimated time of arrival in UTC.
I currently have a very simple script that works as-is, but as the API function is formatted hh:mm and strtotime doesn't seem to recognize adding or subtracting anything but integers, this won't work if in the following script you replace +07 with +hh:mm.
<?php
$time = strtotime("now +07 hours");
print gmdate('H:i T', $time);
?>
So my end outcome should be hh:mm of the ETA in UTC.
Upvotes: 1
Views: 430
Reputation: 5778
A more flexible way:
<?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);
}
?>
Usage:
<?php
echo getETA('07:10');
echo getETA('07:10', 'America/New_York', 'h:i a T');
?>
Example Output:
23:56 UTC
07:56 pm EDT
Upvotes: 3
Reputation: 15802
If you change your strtotime parameter to now +07 hours, +06 minutes
you should be able to add them. To get hours and minutes separate, just use 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);
Upvotes: 3
Reputation: 385114
<?php
$str = "17:26";
$secs = (substr($str, 0, 2) * 3600) + (substr($str, 3, 2) * 60);
echo $secs;
// Output: 62760
?>
Upvotes: 2