У меня есть дата, ведьма отформатирована 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 года