2013-07-02 105 views
0

我将以下代码转换成日期 - >18/07/2013mysql支持的格式。php日期格式转换错误

$date = date('Y-m-d', strtotime('18/07/2013')); 

理想的情况下,应返回2013-07-18 ...
但是,问题是,它会自动选择的字符串:
YEAR as YEAR MONTH as DAY DAY as MONTH

现在,因为它确定18month ,它会超出范围并显示默认日期1970-01-01

我已经浪费了将近两天的时间了。

如果有人能帮忙,请提前致谢!

+2

你可以破解它为'的strtotime(str_replace函数( '/', ' - ', '18/07/2013'))' –

+0

请发布了一个新问题之前使用搜索,这是[Strtotime()不能与dd/mm/YYYY格式一起使用)的副本(http://stackoverflow.com/questions/2891937/strtotime-doesnt-work-with-dd-mm-yyyy-format ) – Prix

+0

从PHP手册 - > YY“/”MM“/”DD这是你应该使用的日期功能... http://php.net/manual/de/datetime.formats.date。 php –

回答

2

试试这个:)

echo date('Y-m-d', strtotime(str_replace('/', '-', '18/07/2013'))); 
+0

谢谢你!像魅力一样工作! – Safeer

5

使用DateTime对象,让PHP了解你将日期传递给它的格式。

$date = DateTime::createFromFormat('d/m/Y', '18/07/2013'); 
echo $date ->format('Y-m-d'); 
+0

对于PHP 5 = 5.3.0,这不是这个吗?我的服务器上安装了较旧版本的php。 – Safeer

+0

@Safeer - 比我的情况下,你需要做的调整,如评论中的andy&prix所示。 – Rikesh

+0

感谢Rikesh,工作。 Ayyappan的回答也相当不错:) – Safeer

1

的strtotime参数应该是格式18-07-2013

0

正斜杠(/)表示美国M/d/Y格式,破折号( - )(。)指欧洲的d-M-Y和期是指ISO Y.M.D.

观察:

echo date("jS F, Y", strtotime("11.12.10")); 
// outputs 10th December, 2011 

echo date("jS F, Y", strtotime("11/12/10")); 
// outputs 12th November, 2010 

echo date("jS F, Y", strtotime("11-12-10")); 
// outputs 11th December, 2010