我想查找日期是否为“ 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”。不知道为什么。
请帮助!
答案 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;