我使用这个网站很多,最后我遇到了一些我可以弄清楚的东西。我有一个时间返回的:PHP - 将时间转换为分数
"1hr 59min"
我想要做的是将此值转换为分钟(119)。
我已经尝试了各种strtotime方法,但似乎没有办法。有任何想法吗?
欢呼声,
斯图
我使用这个网站很多,最后我遇到了一些我可以弄清楚的东西。我有一个时间返回的:PHP - 将时间转换为分数
"1hr 59min"
我想要做的是将此值转换为分钟(119)。
我已经尝试了各种strtotime方法,但似乎没有办法。有任何想法吗?
欢呼声,
斯图
如果它是你可以做
$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;
完美!这工作,谢谢:) – darthvader666uk
阅读PHP文档和使用权的功能,例如http://www.php.net/manual/en/datetime.createfromformat.php等
如果使用正则表达式,然后使用的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);
我想你可以使用正则表达式:
function convertToSeconds($time)
{
$matches = array();
if (preg_match('/^(\d+)hr (\d+)min$/', $time, $matches) {
return $matches[1]*60 + $matches[2];
}
}
你就不能使用小时* 60 +分钟的字符串? – sighol
你的原始数据是什么? –
我打算建议尝试'DateInterval :: createFromDateString(“1hr 59min”)',但似乎解析器不能识别“hr”。如果这是您的输入数据,则您必须根据以下答案自行解析。 –