2011-09-11 48 views
1

我正在使用API​​函數,它返回hh:mm左邊的估計到達時間,即。 0:31離開直到抵達。HH:MM到秒

我想要做的是將返回的hh:mm添加到當前時間,所以最終結果是UTC的預計到達時間。

我目前有一個非常簡單的腳本,雖然原樣工作,但由於API函數格式化爲hh:mm,strtotime似乎無法識別添加或減少除整數之外的任何內容,因此如果在按照腳本將+07替換爲+ hh:mm。

<?php 

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

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

?> 

所以我的最終結果應該是UTC的ETA的hh:mm。

+0

它似乎是一個非常基本的字符串操作過程,從'「HH:MM」'中提取'SS'。 –

回答

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 
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); 
2
<?php 
$str = "17:26"; 
$secs = (substr($str, 0, 2) * 3600) + (substr($str, 3, 2) * 60); 

echo $secs; 
// Output: 62760 
?>