0

我的输入日期格式是 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。谁能纠正我。

这里有两个转换 2digit ye​​ar 到 4 digit ye​​ar 和 / 替换为 -dash

4

4 回答 4

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());
}
于 2013-10-25T16:47:17.907 回答
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,那么这应该没问题

于 2013-10-25T17:03:51.717 回答
-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";
}
于 2013-10-25T17:17:28.517 回答
-1

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

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

?>
于 2013-10-25T16:49:29.687 回答