2011-06-16 87 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);