Zend_Date: l'expansion d'une valeur de l'année à 2 chiffres à 4 chiffres de l'année

StackOverflow https://stackoverflow.com/questions/3112220

  •  29-09-2019
  •  | 
  •  

Question

Avoir une date de naissance au format « MM / jj / aa » pour les personnes nées dans les années 1900. J'utilise Zend_Date à analyser et convertir la valeur de chaîne

$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 pensais

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

Qu'est-ce que je manque? Je ne pense pas que cela est lié à l'année réelle « aaaa » / ISO année « AAAA » dans le traitement Zend_Date.

Mon horrible hack actuelle

$formattedDate = $date->toString('dd/M').'/19'.$date->toString('YY');
Était-ce utile?

La solution

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');

Autres conseils

Apparemment, il est un peu plus compliqué. Selon ce site , années 2 chiffres supérieur ou égal 70 se 1970-1999 alors que les moins de 70 deviennent 2000-2069.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top