Создать объект Date в PHP для дат до 1970 года в определенном формате

У меня есть дата, ведьма отформатирована 22-10-49 like 22-10-49 Я хочу преобразовать ее в объект Date, чтобы сохранить ее в моей базе данных mysql. Я попробую :

 DateTime::createFromFormat('dm-y', $mydate , new DateTimeZone('GMT')); 

но результат – 2049-10-22 вместо 1949-10-22 . Я искал и получил, что createFromFormat возвращает дату только после 1970 года. Но я не знаю, что делать.

Ps: 22-10-49 – это то, что у меня есть, и есть несколько других дат, подобных этому, я не могу изменить его формат или преобразовать его в 22-10-1949 или в любые другие форматы. PS 2: «Я работаю с днями рождения и предвкушением 22-10-15 , а не с 1915 года, а не с 2015 года.

Попробуйте эту функцию.

Изменить: сначала мы преобразуем двухзначный год в 4 цифры. Затем мы сформируем полную дату и передадим ее функции.

  $original_date = '22-10-49'; $date_part = explode('-',$original_date); $baseyear = 1900; // range is 1900-2062 $shortyear = $date_part[2]; $year = 100 + $baseyear + ($shortyear - $baseyear) % 100; $subdate = substr( $original_date, 0, strrpos( $original_date, '-' ) ); $string = $subdate."-".$year; echo safe_strtotime($string); function safe_strtotime($string) { if(!preg_match("/\d{4}/", $string, $match)) return null; //year must be in YYYY form $year = intval($match[0]);//converting the year to integer if($year >= 1970) return date("Ymd", strtotime($string));//the year is after 1970 - no problems even for Windows if(stristr(PHP_OS, "WIN") && !stristr(PHP_OS, "DARWIN")) //OS seems to be Windows, not Unix nor Mac { $diff = 1975 - $year;//calculating the difference between 1975 and the year $new_year = $year + $diff;//year + diff = new_year will be for sure > 1970 $new_date = date("Ymd", strtotime(str_replace($year, $new_year, $string)));//replacing the year with the new_year, try strtotime, rendering the date return str_replace($new_year, $year, $new_date);//returning the date with the correct year } return date("Ymd", strtotime($string));//do normal strtotime } 

Выход : 1949-10-22

Источник: использование strtotime для дат до 1970 года