我使用這個網站很多,最後我遇到了一些我可以弄清楚的東西。我有一個時間返回的: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」。如果這是您的輸入數據,則您必須根據以下答案自行解析。 –