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

时间:2019-07-03 13:14:03

标签: php date strtotime

我想查找日期是否为“ 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”。不知道为什么。

请帮助!

2 个答案:

答案 0 :(得分:1)

您可以“帮助”解释器猜测正确的格式。

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)

答案 1 :(得分:1)

一种方法可能是将日期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;