2013-12-23 52 views
0

我使用这个网站很多,最后我遇到了一些我可以弄清楚的东西。我有一个时间返回的:PHP - 将时间转换为分数

"1hr 59min" 

我想要做的是将此值转换为分钟(119)。

我已经尝试了各种strtotime方法,但似乎没有办法。有任何想法吗?

欢呼声,

斯图

+3

你就不能使用小时* 60 +分钟的字符串? – sighol

+0

你的原始数据是什么? –

+0

我打算建议尝试'DateInterval :: createFromDateString(“1hr 59min”)',但似乎解析器不能识别“hr”。如果这是您的输入数据,则您必须根据以下答案自行解析。 –

回答

0

如果它是你可以做

$onefiftynine = "1hr 59min"; 
$split  = explode(' ',$onefiftynine); 
$hour   = substr($split[0],0,strpos($split[0],'hr')); 
$min   = substr($split[1],0,strpos($split[1],'min')); 

echo $hour * 60 + $min; 
+0

完美!这工作,谢谢:) – darthvader666uk

0

如果使用正则表达式,然后使用的preg_replace():

$str = '1hr 59min'; 
$str = preg_replace("/(\d+)hr (\d+)min/e", "$1*60+$2", $str); 
// parsing the hour and minute, and doing calculation 

如果您的输入可以只有小时或只有最小,然后添加以下两行与上面:

$str = preg_replace("/(\d+)hr/e", "$1*60", $str); 
$str = preg_replace("/(\d+)min/", "$1", $str); 
0

我想你可以使用正则表达式:

function convertToSeconds($time) 
{ 
    $matches = array(); 
    if (preg_match('/^(\d+)hr (\d+)min$/', $time, $matches) { 
     return $matches[1]*60 + $matches[2]; 
    } 
}