PHP 日期转换 mm/dd/yy 到 yyyy/mm/dd -error


PHP date conversion mm/dd/yy to yyyy/mm/dd -error

我的输入日期格式是 dd/mm/yy。我使用以下代码将其转换为 yyyy-mm-dd。

    $cal_date= $fileop[1];
    $date = str_replace('/', '-', $cal_date);
    $invdate=date('Y-m-d',strtotime($date));

我得到的结果是 24/10/13-->2024-10-13。谁能纠正我。

这里两个转换 2 位数字年到 4 位数字年和/替换为 -dash

使用 DateTime 对象可能更好

try{
   $date = DateTime::createFromFormat('d/m/y',$cal_date);
   $invdate = $date->format('Y-m-d');
} catch (Exception $e) {
   echo $e->getMessage(); // or
   print_r(DateTime::getLastErrors());
}
$date = DateTime::createFromFormat('d/m/y',$cal_date);
$break = explode("/", $date);
$yearComp = $break[2];
if($yearComp < 70)
    $invdate = $date->format('Y-m-d'); 
else {
    // code that would add 100 years to the date generated }

只要知道 69 会打印出 2069,但 70 会打印出 1970 年。如果你不会达到 70,那么这应该没问题

另一种方式 - 在此处查看演示

<?php
$date= "02/05/2013"; //dd/mm/yy
$dd=substr($date, 0, 2);
$mm=substr($date, 3, 2);
$yy=substr($date, 6, 4);
echo $yy."/".$mm."/".$dd; // yyyy-mm-dd.
?>

在一次拍摄中:

$invdate = date_format(date_create_from_format('m/d/y', $fileop[1]), 'Y-m-d');

如果您对输入日期格式没有信心:

if ($invdate = date_create_from_format('m/d/y', $fileop[1])) {
    $invdate = date_format($invdate, 'Y-m-d'); //date format yyyy-mm-dd
} else {
    echo "ERROR: '{$fileop[1]}' has not the date format mm/dd/yy";
}