2010-06-24 4 views
1

Avoir une date de naissance au format «MM/jj/aa» pour les personnes nées dans les années 1900. J'utilise Zend_Date pour analyser et convertir la valeur de chaîneZend_Date: extension d'une valeur de l'année à 2 chiffres à l'année à 4 chiffres

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

Je reçois

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 

Je me attendais

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

Qu'est-ce que je suis absent? Je ne pense pas que cela soit lié à l'année 'yyyy'/l'année ISO 'YYYY' dans Zend_Date.

Mon horrible hack actuelle

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

Répondre

1

version courte (1 ou 2 chiffres) de l'année est toujours dans le siècle en cours. Il faut donc utiliser :

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

Apparemment, il est un peu plus compliqué. Selon this site, les années à 2 chiffres supérieures ou égales à 70 deviennent 1970-1999 alors que celles de moins de 70 ans deviennent 2000-2069.

Questions connexes