2011-12-27 200 views

回答

3
$thedate = '01/12/2011'; 
$date = DateTime::createFromFormat('d/m/Y', $thedate); 

print($date->format('m')); 

PHP的DateTime对象只能从PHP 5.2.3的PHP 5.2和createFromFormat()获得。

另外,您可以伪造的时间戳是正确的格式:

$thedate = str_replace('/', '-', '01/12/2011'); 

$date = strtotime($thedate); 
print(date('m', $date)); 
+0

+1你应该比较喜欢DateTime对象,他们做的最好的工作 – Anonymous 2011-12-27 09:56:21

+0

@DanSurfrider是的,它不会在2038年死去: ) – PeeHaa 2011-12-27 10:00:50

+0

嗨,Peehaa ..谢谢你的回复。我试过你的代码,但我得到一个错误消息,说 - 致命错误:调用未定义的方法DateTime :: createfromformat() – 2011-12-27 10:49:10

2

尝试

$v = explode('/', $date); 
echo $v[1]; 

在PHP 5.4+:

$month = explode('/', $date)[1]; 

我也写了:

$t = strtotime($date); 
echo date('m', $t); 

,因为在格式12/10/2012日期将被视为英语日期,以便第二部分10被视为一个月的日子并不像月份数,这将不起作用。您应该使用

DateTime::createFromFormat('d/m/Y', $date) 

as @PeeHaa建议。

+0

strtotime()将第二个数字视为日期 – 2011-12-27 09:53:44

+0

@piotrekkr它以这种格式处理。正确的'格式'将是:'01-12-2011' – PeeHaa 2011-12-27 10:02:34

+0

你是对的,我的错误 – piotrekkr 2011-12-27 11:42:15

相关问题