2014-09-26 50 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); 
    ?> 
相关问题