Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/262.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 日期时间年格式问题_Php_Datetime - Fatal编程技术网

Php 日期时间年格式问题

Php 日期时间年格式问题,php,datetime,Php,Datetime,我必须导入一个数据库从现有的网站到新的网站,我们已经作出。 存储在早期数据库中的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(

我必须导入一个数据库从现有的网站到新的网站,我们已经作出。 存储在早期数据库中的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上使用PHP5.4.6。 我有很多类似的日期,相同的代码可以很好地工作,但也有一些错误。
找不到解决方案。。。请注意。

生日不可能在将来。如果生日>当前年份,则添加“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');

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);
在这里演示~


我甚至还添加了一个更为近期的日期,向您展示了它是如何处理的。

在PHP 5.1.0之前,这可能有您想要的答案:我不明白为什么这会被否决。这不是我见过的最好的代码,但它是。