Zend_date: расширение ценности 2-значного года до 4-значного года

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

  •  29-09-2019
  •  | 
  •  

Вопрос

Иметь дату рождения в формате «ММ / ДД / Г.Ю.» для людей, рожденных в 1900-х годах. Я использую 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

Что мне не хватает? Я не думаю, что это связано с реальным годом «Гюржи» / ISO-год «Гюржи» в Zend_date.

Мой нынешний ужасный взлом

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

Другие советы

Видимо, это немного сложнее. В соответствии с этот сайт, 2-значные годы больше или равны 70 стать 1970-1999, в то время как эти менее 70 становятся 2000-2069 годом.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top