@vinegred

Как сравнить форматы дат в PHP?

Здравствуйте!

Учусь работать с VK API. В документации есть такое поле:

bdate / string
Дата рождения. Возвращается в формате D.M.YYYY или D.M (если год рождения скрыт). Если дата рождения скрыта целиком, поле отсутствует в ответе.

Я в PHP скрипте перевожу как смог дату рождения в возвраст вот так:

// извлекаем из ответа его дату рождения 
$bdate = $user_info->response[0]->bdate;
// преобразуем дату рождения в возраст (лет)
$unixDate = strtotime($bdate);
$age = (int)((time() - $unixDate) / 31556926);


Если дата приходит в формате D.M.YYYY проблем нет, но если дата приходит в формате D.M, то конвертирование в возраст уже не работает. Подумал сравнить "как-то" форматы дат через if, но в поиске таких решений не нашел. Типа если год не пришел, то вообще не считать возраст юзера.

Как же корректно обратно обработать такую ситуацию в PHP?
  • Вопрос задан
  • 108 просмотров
Решения вопроса 1
kawabanga
@kawabanga
Просто же...

D.M, то конвертирование в возраст

Конечно не работает. И вы можете либо хранить возраст в годах отдельно, а дату рождения отдельно. И решать так свою проблему. Советую ознакомиться с библиотекой php.net/manual/ru/class.datetime.php . Решит много проблем ваших.

Раз у вас дата приходит в двух возможных вариантах, и приходит от проверенного источника, то считайте как то так:
$date = '01.10.2001';
        $dateType = count( explode('.',$date));

        if ( $dateType=== 3) { // работаем как с полноценной

        } elseif ($dateType=== 2) { // работаем как с срезанной
            
        } else {// дата не опознана
            
        }
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы