我必须将现有网站的数据库导入我们制作的新网站。 存储在早期数据库中的dob字段会产生问题。 dob格式为mm / dd / yy或mm / dd / yyyy,而我们需要以Y-m-d格式保存。
我正在使用此代码,该代码适用于日期
$case_contact_dateval = '04/11/81';
并给我约会1981-04-11,这是正确的。而在
$case_contact_dataval = '03/22/67';
$date = DateTime::createFromFormat('m/d/y',$case_contact_dataval);
echo $date = $date->format('Y-m-d');
其他一些日期
$case_contact_dataval = '03/22/67';
$case_contact_dataval = '07/05/40';
$case_contact_dataval = '01/25/59';
$case_contact_dataval = '03/09/58';
我的日期是2067-03-22,这是错误的,因为所有这些日期都是出生日期。 我在ubuntu上使用php 5.4.6。 我有很多像这些日期相同的代码工作正常和一些错误。 无法获得解决方案......请提供建议。
答案 0 :(得分:2)
DateTime
将70岁以下的任何两位数年份视为21世纪。
您必须转换数据,而不是尝试创建日期。例如
$case_contact_dataval = '03/22/67';
$threshold = date('y'); // current two digit year
list($month, $day, $year) = sscanf($case_contact_dataval, '%d/%d/%d');
$date = sprintf('%02d%02d-%02d-%02d',
$year > $threshold ? 19 : 20, $year, $month, $day);
在这里演示〜https://eval.in/155942
我甚至投入了一个更新的日期来向您展示它是如何处理的。
答案 1 :(得分:-2)
生日不可能在将来。如果生日>添加'19'当年
$case_contact_dateval = '04/11/67';
if (substr($case_contact_dateval, -2) > date('y')) {
$case_contact_dateval = substr($case_contact_dateval, 0, -2) . '19' . substr($case_contact_dateval, -2);
}
$date = \DateTime::createFromFormat('m/d/Y', $case_contact_dateval);
echo $date->format('Y-m-d');