2012-07-17 73 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'));