Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Strange behavior of Date Function

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

Codepad

I am confused that why the first format don't produce correct answer. Any Help?

like image 724
Ashwini Agarwal Avatar asked Dec 21 '22 16:12

Ashwini Agarwal


2 Answers

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.

like image 180
JvdBerg Avatar answered Jan 02 '23 13:01

JvdBerg


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.

like image 37
lanzz Avatar answered Jan 02 '23 15:01

lanzz