I encountered with this question today on StackOverflow but didn't get answer.
My question is
echo date('Y-m-d',strtotime('2012-september-09')); // output - 2012-09-01
echo date('Y-m-d',strtotime('09-september-2012')); // output - 2012-09-09
I am confused that why the first format don't produce correct answer. Any Help?
From the manual:
if the separator is a slash (/), then the American m/d/y is assumed; whereas if the separator is a dash (-) or a dot (.), then the European d-m-y format is assumed.
This is not behavior of the date function but of the strtotime. strtotime can handle only dates in specific formats listed on the Date Formats manual page. 09-september-2012 is in the dd ([ \t.-])* m ([ \t.-])* y format listed there, but 2012-september-09 does not match any of the supported formats.
I think in your code,
echo date('Y-m-d',strtotime('2012-september-09'));
strtotime('2012-september-09') is not a valid format ('2012-september-09') for strtotime() date function.
refer this link http://www.php.net/manual/en/datetime.formats.date.php
来源:https://stackoverflow.com/questions/12278943/strange-behavior-of-date-function