2010-06-24 91 views
1

对于出生于1900年代的人有一个格式为“MM/dd/yy”的出生日期。我使用Zend_Date的运算来 分析和转换字符串值Zend_Date:将2位数字的年份值扩展为4位数字年份

$date = new Zend_Date(); 
$logger->info(sprintf('Convert DOB %s -> %s',$dateOfBirth,$date->toString('yyyy-M-dd'))); 

我得到

2010-06-24T16:55:50+00:00 INFO (6): DOB 9/13/57 
2010-06-24T16:55:50+00:00 INFO (6): Convert DOB : 9/13/57 -> 2057-9-13 

我预计

2010-06-24T16:55:50+00:00 INFO (6): Convert 9/13/57 -> 1957-9-13 

我失去了什么?我不认为这与Zend_Date中实际的'yyyy'/ ISO年'YYYY'处理有关。

我现在可怕的黑客

$formattedDate = $date->toString('dd/M').'/19'.$date->toString('YY'); 

回答

1

短(1或2位数)年版始终处于当前的世纪。 so use:

$dob = '9/13/57'; 
    $date = new Zend_Date($dob, 'M/d/yy'); 
    echo $date->subYear(100)->toString('YYYY-MM-d'); 
1

显然,它有点复杂。根据this site,大于或等于70的两位数年份变为1970-1999,而小于70的那些变为2000-2069。

相关问题