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

时间:2013-10-25 16:41:56

标签: php sql date datetime

我的输入日期格式是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

4 个答案:

答案 0 :(得分:2)

使用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());
}

答案 1 :(得分:0)

$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,那么这应该没问题

答案 2 :(得分:-1)

另一种方式 - See The Demo Here

<?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.

?>

答案 3 :(得分:-1)

在一次拍摄中:

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