2012-07-17 37 views

回答

4

使用DateTime正确地解析这个给你。这样,你不必做任何操作的原始输入,只需将其提供给DateTime::createFromFormat(),像这样:

$date = DateTime::createFromFormat('!d/m/Y+', "13/07/2012T15:00:00", new DateTimeZone("America/New_York")); 
echo $date->format('d-n-Y'); 

will print

13-7-2012 

确保您设置在correct timezone致电new DateTimeZone("...")

+1

**注意:**您至少需要PHP 5.3才能正常工作。 – 2012-07-17 12:58:57

+0

@AymanSafadi - PHP 5.3于2009-06-30发布,** [超过3年前](http://en.wikipedia.org/wiki/PHP#Release_history)**。我认为是时候停止警告人们了。 – nickb 2012-07-17 13:01:08

+0

我希望我能同意你的看法!至少GoDaddy [一年前不支持PHP 5.3](http://support.godaddy.com/groups/web-hosting/forum/topic/php-5-3-or-bust/)。如果别人还没有,我不会感到惊讶。 – 2012-07-17 13:09:48

1

对于strtotime(),您输入的字符串不是valid date format。值得注意的是/不是dd/m/yyyy格式的公认分隔符。

简单地转换/-解决了这个问题:

13-07-2012T15:00:00 

然后,你可以这样做:

echo date('d-n-Y', strtotime('13-07-2012T15:00:00')); 

要转换这个字符串,你可以做一些简单的字符串替换。

str_replace('/', '-', $input); 
0

,因为你只需要拿到13-7-2012你约会执行替换“/”中的“ - ”来获得日期

date('d-n-Y', strtotime(str_replace('/', '-', '13/07/2012T15:00:00'));