我的输入日期格式是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
答案 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";
}