PHP 1970以下个人身份证号码获取时间
PHP get time from personal identity number under 1970
我有问题,我无法从 1970 年以下的个人身份证号码中获取时间,我需要解决这个问题,但使用时间。我的功能看起来像。我不知道我能走哪条路。谢谢!
function getBirthDayFromRd($rd){
$day = substr($rd,4,2);
$month = substr($rd, 2,2);
$year = substr($rd, 0,2);
if($month>=51 and $month<=62){
$month = $month - 50;
}
$time = strtotime($day.".".$month.".".$year);
return date("d.m.Y", $time);
}
strtotime()
由于绑定到不支持 1970 年之前的日期的 Unix 纪元而失败。只需使用 DateTime 即可处理 1970 年之前的日期并轻松转换日期:
function getBirthDayFromRd($rd){
$date = DateTime::createFromFormat('ymd',$rd);
if($date->format('Y') > date("Y")) {
$date->modify('-100 years');
}
return $date->format('d.m.Y');
}
DateTime::createFromFormat()
解析您的日期并创建 DateTime
对象。然后我们只需调用 DateTime::format()
将其格式化为所需的格式即可。
更新
刚刚修复了 1970 年之前的日期显示为 100 年后的错误。
我用另一种方法解决了,但你让我开始了。
if($year < 70){
$year = $year+1900;
$time = date_create_from_format("d.m.Y", $day.".".$month.".".$year);
return date_format($time, "d.m.Y");
}else{
$time = strtotime($day.".".$month.".".$year);
return date("d.m.Y", $time);
}
我有问题,我无法从 1970 年以下的个人身份证号码中获取时间,我需要解决这个问题,但使用时间。我的功能看起来像。我不知道我能走哪条路。谢谢!
function getBirthDayFromRd($rd){
$day = substr($rd,4,2);
$month = substr($rd, 2,2);
$year = substr($rd, 0,2);
if($month>=51 and $month<=62){
$month = $month - 50;
}
$time = strtotime($day.".".$month.".".$year);
return date("d.m.Y", $time);
}
strtotime()
由于绑定到不支持 1970 年之前的日期的 Unix 纪元而失败。只需使用 DateTime 即可处理 1970 年之前的日期并轻松转换日期:
function getBirthDayFromRd($rd){
$date = DateTime::createFromFormat('ymd',$rd);
if($date->format('Y') > date("Y")) {
$date->modify('-100 years');
}
return $date->format('d.m.Y');
}
DateTime::createFromFormat()
解析您的日期并创建 DateTime
对象。然后我们只需调用 DateTime::format()
将其格式化为所需的格式即可。
更新
刚刚修复了 1970 年之前的日期显示为 100 年后的错误。
我用另一种方法解决了,但你让我开始了。
if($year < 70){
$year = $year+1900;
$time = date_create_from_format("d.m.Y", $day.".".$month.".".$year);
return date_format($time, "d.m.Y");
}else{
$time = strtotime($day.".".$month.".".$year);
return date("d.m.Y", $time);
}