質問

1900年代に生まれた人々のために、「mm/dd/yy」の形式で生年月日を持っています。 Zend_Dateを使用して文字列値を解析して変換します

$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 Year 'yyyy' handlingに関連しているとは思いません。

私の現在の恐ろしいハック

$formattedDate = $date->toString('dd/M').'/19'.$date->toString('YY');
役に立ちましたか?

解決

年の短い(1桁または2桁)バージョンは常に現在の世紀です。だから使用:

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

他のヒント

どうやら、それはもう少し複雑です。によると このサイト, 、70以上の2桁の年は1970-1999になりますが、70未満は2000-2069になります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top