Reputation: 4979
I want to convert date 24/09/2010
in format dd/mm/yyyy
to 2010-09-24
in format yyyy-mm-dd
.
This works:
date("Y-m-d",strtotime("09/24/2010"));
But this does not:
date("Y-m-d",strtotime("24/09/2010")); // it returns '1970-01-01'
Any idea why?
Upvotes: 2
Views: 5427
Reputation: 42350
strtotime
does its best to guess what you mean when given a string, but it can't handle all date formats. In you example, it is probably thinking that you are trying to refer to the 24th month, which isn't valid, and returns 0, which date then treats as the unix epoch (the date you got).
you can get around this using the mktime() and explode() functions, like so:
$date = "24/09/2010";
$dateArr = explode("/",$date);
$timeStamp = mktime(0,0,0,$dateArr[1],$dateArr[0],$dateArr[2]);
$newFormat = date("Y-m-d",$timeStamp);
Upvotes: 2
Reputation: 385
As you say, date("Y-m-d",strtotime("09/24/2010")) will work,because the date format--"09/24/2010"is correct, but "24/09/2010" is not the correct date format. you can find something useful here
Upvotes: 0
Reputation: 18908
according to php, the valid php formats are stated here. So basically what you gave is invalid.
Alternatively, you can use mktime, date_parse_from_format or date_create_from_format
Upvotes: 2