PHP преобразовывает yy в yyyy, используя strtotime и дату, в то же время принудительно перенося даты - PullRequest
2 голосов
/ 12 марта 2019

Я анализирую даты в диапазоне от 1950-х до ~ 2021 года, сохраненные в формате мм / дд / гг. Использование date('Y-m-d',strtotime($time)); работает для всех дат после 1970 года, но оно борется с датами до этого. Даты типа 02/26/63 становятся 2063-02-26 вместо 1963-02-26.

Есть ли способ принудительного завершения года, после которого все даты будут считаться 2000-ми, а не 1900-ми? Или я должен вообще отказаться от strtotime() и разобрать строку сам?

Использование следующей версии PHP

PHP 7.1.8 (cli) (built: Dec 18 2017 22:20:57) ( NTS ) Copyright (c) 1997-2017 The PHP Group Zend Engine v3.1.0, Copyright (c) 1998-2017 Zend Technologies

1 Ответ

4 голосов
/ 12 марта 2019

Поскольку у вас действительно нет способа заставить PHP делать что-то по-другому, лучше разобрать хотя бы год и добавить к нему число 19. Затем вы можете использовать функции DateTime для дальнейшей работы с ним.

$thedate = '02/26/63';
$year = substr($thedate,-2);
$year = ($year < 70 ? '19' : '20') . $year;
echo $year;
...