我是以下代码来转换此日期 - > 18/07/2013
支持mysql
格式。
$date = date('Y-m-d', strtotime('18/07/2013'));
理想情况下,这应该返回2013-07-18
...
但是,问题在于它会自动选择字符串为:
YEAR as YEAR
MONTH as DAY
DAY as MONTH
现在,因为它将18
标识为month
,所以它超出范围并显示默认日期1970-01-01
。
我已经浪费了将近两天的时间。
如果有人可以提供帮助,请提前感谢!
答案 0 :(得分:5)
使用DateTime对象,让php了解您将日期传递给它的格式。
$date = DateTime::createFromFormat('d/m/Y', '18/07/2013');
echo $date ->format('Y-m-d');
答案 1 :(得分:2)
试试这个:)
echo date('Y-m-d', strtotime(str_replace('/', '-', '18/07/2013')));
答案 2 :(得分:1)
strtotime参数应采用格式18-07-2013
答案 3 :(得分:1)
您需要set the time zone日期,您的日期被解析为美国,美国日期格式为mm / dd / yyyy ......
date_default_timezone_set('Europe/Berlin');
也使用right reg. expression for the date function
$date = date( 'YY "/" MM "/" DD', strtotime('18/07/2013'));
答案 4 :(得分: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
答案 5 :(得分:0)
问题在于PHP中的日期字符串
- 以斜线分隔的日期值假定为美国顺序:m / d / y
- 以破折号分隔的日期值假定为欧洲顺序:d-m-y
您想知道的关于交谈日期的所有内容都在
之下