ЧЧ: ММ в секундах - PullRequest
       9

ЧЧ: ММ в секундах

1 голос
/ 11 сентября 2011

Я использую функцию API, которая возвращает приблизительное время прибытия в чч: мм, т.е. 0:31 осталось до прибытия.

Я пытаюсь добавить возвращенное значение чч: мм к текущему времени, поэтому конечным результатом будет приблизительное время прибытия в UTC.

В настоящее время у меня есть очень простой сценарий, который работает как есть, но поскольку функция API отформатирована в формате hh: mm и strtotime, похоже, не распознает сложение или вычитание чего-либо, кроме целых чисел, это не будет работать, если в следующем скрипт, который вы заменяете +07 на + чч: мм

<?php

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

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

?>

Так что мой конечный результат должен быть чч: мм ETA в UTC.

Ответы [ 3 ]

3 голосов
/ 11 сентября 2011

Более гибкий способ:

<?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 
3 голосов
/ 11 сентября 2011

Если вы измените свой параметр 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);
2 голосов
/ 11 сентября 2011
<?php
$str  = "17:26";
$secs = (substr($str, 0, 2) * 3600) + (substr($str, 3, 2) * 60);

echo $secs;
// Output: 62760
?>
...