2011-06-16 52 views

回答

2
$yourtime = "7:00 am"; 
preg_match("/([0-9]{1,2}):([0-9]{1,2}) ([a-zA-Z]+)/", $yourtime, $match); 
$hour = $match[1]; 
$min = $match[2]; 
$ampm = $match[3]; 
+0

工作非常感謝! – 2011-06-16 21:59:28

6
$a  = preg_split('/[: ]/', '7:00 am'); 
$hour = $a[0][0]; 
$minute = $a[1][0]; 
$ampm = $a[2][0]; 
2
$time = '7:00 am'; 
list ($time, $ampm) = explode(' ', $time); 
list ($hour, $min) = explode(':', $time); 
+0

@genesis當然。但是通常有很多方法可以解決問題,對吧? – Viktor 2011-06-16 21:41:21

+0

好吧對不起..我沒有想過 – genesis 2011-06-17 10:16:51

1
$time = '7:00 am'; 
$hour = date("g",$time); 
$min = date("i",$time); 
$ampm = date("a",$time); 

http://php.net/manual/function.date.php

+0

我喜歡你使用時間函數,而不是隻是切斷字符串,但是你不需要首先在字符串上執行'mktime'?對不起,如果我錯了,它有點 – 2011-06-16 21:45:16

+0

問題的方式問我不知道如果OP有一個字符串,或有一個實際的時間對象。我想,如果OP問他(他)他可能是PHP的新手,應該使用最簡單,最直接的路線,並且應該查看文檔以查明原因。像其他一些答案一樣,剪切字符串和preg匹配不是初學者級別的東西,所以OP至少應該看到有更簡單的解決方案。最後的想法:preg_match好像是爲了解決這個問題而對saltine進行噴砂,並且可能需要比問題真正需要更多的處理。 – invertedSpear 2011-06-16 22:19:54

+1

date();據我所知,只接受unix時間戳。我錯了嗎? – genesis 2011-06-17 10:17:35

3
sscanf("7:00 am", "%d:%d %s", $hour, $min, $ampm);