This question already has an answer here:
I want to find whether a date is in "j/n/Y" format or not, if its is then i want to convert ot to "d/m/Y". If it is already in "d/m/Y" format i dont want any alteration in it.
I tried this-
$date = '1/7/2019';
here i am assuming 1 as date, 7 as month, and 2019 as year(obviously). Now,
$date_format_changed = date("d/m/Y", strtotime($date));
this above code gives me output as "07/01/2019". But i want output as "01/07/2019".
and if date is already in d/m/Y format eg- 17/12/2019, when this string will be passed in above date conversion code, it gives me output "01/01/1970". Dont know why.
Please help!
</div>
An approach could be to explode
the date into its day month and year components, and then analyse it
$date = '1/7/2019';
$array = explode("/", $date);
$day = $array[0];
$month = $array[1];
$year = $array[2];
if(strlen($day) == 1) $day = "0".$day;
if(strlen($month) == 1) $month = "0".$month;
echo $day."/".$month."/".$year;
You can "help" the interpreter to guess the correct format.
date_create_from_format is one way to do this.
$date = '1/7/2019';
$parsed = date_create_from_format("j/n/Y", $date);
if ($parsed == false) {
// Not in j/n/Y format
} else {
$dmY = $parsed->format("d/m/Y");
}
Note that this will also parse dates which theoretically match j/n/Y but are intended in a different way. (e.g. when you use d/m/Y it might also detect m/d/Y)