2012-05-16 78 views
2

如何將「1小時10分鐘」字符串轉換爲以下格式01:10:00使用php。這是我做過什麼 - echo date('H:i:s',strtotime('1 hour and 10 min'));
輸出是 - 01:00:00將「1小時10分鐘」轉換爲01:10:00在php

+0

總是有'小時','和'和'min'嗎? –

+0

是的字符串包含小時和分鐘總是 – swapnesh

+0

所以它可能是小時或幾小時?取決於小時是否> 1? –

回答

1
$time = '1 hour and 10 min'; 

$arr = explode(' ', $time); 

if (count($arr) > 2) { 
echo date('H:i:s', strtotime($arr[0] . ':' . $arr[count($arr)-2])); 
} else { 
    echo $arr[1] == 'hour' ? date('H:i:s', strtotime($arr[0] . ':' . '00')): 
    date('H:i:s', strtotime(00 . ':' . $arr[0])); 
} 
+0

此代碼不適用於 - $ time ='7小時';小時m在一些字符串中,我只有幾個小時,在某些時候只有幾分鐘被指定 – swapnesh

+0

對不起,但你說分鐘和小時總是有 – woozy

+0

我編輯了代碼。現在它也適用於$ time ='7小時' – woozy

-3

試試這個

$字符串= 「1小時10分鐘」;

回聲的preg_replace( 「/ [AZ \ S] + /」, 「:」,$弦)「00

+0

如何將字符串'1小時10分鐘'轉換爲'01:10:00'? – Mischa

+0

對不起,我修改了我的答案,請現在檢查 – Hearaman

4

假設hourandmin總是有(強調),你。可以使用sscanf

$text = "1 hour 10 min"; 
list($hour, $min) = sscanf($text, "%d hour %d min"); 
echo 
    str_pad($hour, 2, '0', STR_PAD_LEFT) . ':' . 
    str_pad($min, 2, '0', STR_PAD_LEFT) . 
    ':00'; 
+0

如果我指定$ text =「7分鐘」;輸出是 - 07:00:00這是錯誤的:( – swapnesh

+0

@swapnesh 1)看到我的強調2)你的評論說'是的字符串包含小時和分鐘總是':s,無論如何,你已經接受了答案:),祝你好運 –

+0

// ohh我很抱歉1)我非常渴望一個工作解決方案,是的我承認我錯過了你強調的字符串:(和2)我的意思是說,字符串將包含小時和分鐘只..很抱歉,但我認爲接受的數量超過我的接受:) – swapnesh

1
php > preg_match('/^(\d+)\shour[^\d]+(\d+)\smin.+$/i', '1 hour and 10 minutes', $matches); 
php > echo str_pad($matches[1], 2, '0', STR_PAD_LEFT).':'.str_pad($matches[2], 2, '0', STR_PAD_LEFT).':00'; 
01:10:00 
0

假設小時和分鐘總是在那裏(即使0 hours 0 minutes):

$my_time_string = '1 hour and 10 min'; 
preg_match_all('/\d+/', $my_time_string, $out); 
$output = sprintf('%02d:%02d:00', $out[0][0], $out[0][1]); 
echo $output; 
1

望着在PHP documentation for the strtotime function的例子,似乎它可能是造成你的問題的話and

我不知道你的輸入字符串來自哪裏,但是可以排除and(即只有1 hour 10 min)?

+0

是的,我可以刪除該「和」基本上我正在尋找一個簡單的功能,因爲這件事聽起來是一個普遍的東西:) – swapnesh