У меня есть json с датой пользователей. Даты могут быть в формате:
"bdate": "25.10",
"bdate": "8.7.1990"
"bdate": "13.10.1984"
"bdate": "7.3"
Как я могу глобально анализировать эти даты в углероде?
Когда я использую:
Carbon::parse($people->bdate)
Я получаю сообщение об ошибке:
DateTime::__construct(): Failed to parse time string (25.10) at position 0 (2): Unexpected character
"дата": "25.10" означает: 25 октября.
Вот я и подумал... вообще, какой это год? Вы не можете назначить свидание без года. Если я не могу понять это (как человек), неудивительно, что простой фрагмент кода тоже не может.
@ArtisticPhoenix, а что я могу сделать? Мне нужно получить дату рождения, но служба присылает мне даты, где год может быть, а год может быть нет.
@MafysGrif попробуйте \Carbon\Carbon::createFromFormat('d.m', $date)->day;, хотя это требует некоторой работы, чтобы соответствовать всему вашему делу.






Вероятно, есть более простое решение, проверил это, и оно работает.
$date = [null, null, null];
$data = explode('.', "25.10");
foreach ($data as $key => $da) {
$date[$key] = $da;
}
$date = Carbon::createFromDate($date[2], $date[1], $date[0]);
Это может быть еще одним решением вашей проблемы.
function getBirthDateInCarbon($date){
$count = substr_count($date,'.');
if ($count==1){
return \Carbon\Carbon::createFromFormat('d.m', $date);//default year will be current year
}
return \Carbon\Carbon::createFromFormat('d.m.Y', $date);
}
"bdate": "25.10",что означает этот формат, я имею в виду, как бы вы преобразовали его в обычную дату?