2014-09-26 51 views
-3

我一直堅持使用php日期時間轉換。我必須將「d天X小時Y分鐘」這樣的動態時間字符串轉換爲總分鐘數。這段時間的字符串是動態的,並由一些第三方API返回。這可能像'X小時Y分鐘','Y分鐘'等。如何將'X小時Y分鐘'的時間字符串轉換爲z分鐘php

如果有人對此有任何線索,請幫助我。

在此先感謝。

+2

考查['DateInterval'](http://php.net/manual/en/dateinterval.format.php)和['的strtotime()'](http://uk1.php.net /manual/en/function.strtotime.php) – Joe 2014-09-26 10:42:52

+0

此API是否提供其他格式? – George 2014-09-26 10:43:32

+0

如何使用正則表達式分別返回小時和分鐘。例如: ([\ d] +)[\ s] +(?i)(?=小時) ([\ d] +)[\ s] +(?i)(?=分鐘) – nire 2014-09-26 10:45:39

回答

1

喬回答說,在這裏用自己的方式輕輕一推。正如我們所添加的,請注意前面的+。我們可以將它們都轉換爲日期對象,並執行diff()來獲得提到的DateInterval。

$apiTimeStamp = strtotime("+1 weeks 2 days 4 hours 2 seconds"); 
echo abs($apiTimeStamp - time())/60; 
+0

感謝Ciccio,這個解決方案正如我期待的那樣工作。 – 2014-09-26 11:38:08

0

你可以試試這個:

<?php 
$min=0; 
$arr = '1 hours 20 minutes'; 

$a=explode(' ',$arr); 
if($a[1] == 'hours') 
{ 
    $min = $min+ $a[0]*60; 
} 
if($a[3] == 'minutes') 
{ 
    $min =$min+ $a[2]; 
} 
if($a[1] == 'minutes') 
{ 
    $min = $min+ $a[0]; 
} 
echo "'".$min." minutes"."'"; 
?> 
0
<?php 
    $apistring = "10 Hours 15 Minutes"; 
    preg_match("#([\d]+)[/\s]+(?i)(?=hours)#", $apistring, $hours); 
    preg_match("#([\d]+)[/\s]+(?i)(?=minutes)#", $apistring, $minutes); 
    if (is_numeric($hours[1])==true) { 
    $intHourMinutes = $hours[1]*60; 
    } 
    else { 
    $intHourMinutes = 0; 
    } 
    if (is_numeric($minutes[1])==true) { 
    $intMinutes = $minutes[1]; 
    } 
    else { 
    $intMinutes = 0; 
    } 
    $totalminutes=$intHourMinutes+$intMinutes; 
    print_r($totalminutes); 
    ?> 
相關問題