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

How to check whether a date is in j-n-Y format or not? if yes then how to convert it to d-m-Y format?

我想知道日期是否为 "j/n/Y" 格式,如果是,那么我想将 ot 转换为 "d/m/Y"。如果它已经是 "d/m/Y" 格式,我不想对其进行任何更改。

我试过了-

         $date = '1/7/2019'; 

这里我假设 1 是日期,7 是月份,2019 是年份(很明显)。现在,

        $date_format_changed = date("d/m/Y", strtotime($date));

以上代码给出的输出为“07/01/2019”。但我希望输出为“01/07/2019”。

如果日期已经是 d/m/Y 格式,例如 17/12/2019,当这个字符串将在上面的日期转换代码中传递时,它会给我输出“01/01/1970”。不知道为什么。

请帮忙!

您可以"help"解释器来猜测正确的格式。

date_create_from_format 是一种方法。

$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");
}

请注意,这还将解析理论上匹配 j/n/Y 但意图不同的日期。 (例如,当您使用 d/m/Y 时,它可能还会检测到 m/d/Y)

一种做法是将日期explode分解成日月年组成部分,然后分析

$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;