如何检查日期是否为j-n-Y格式? 如果是,那么如何将其转换为d-m-Y格式? [重复]

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)