Неожиданный ответ при использовании формата даты в php

#php

#php

Вопрос:

Я хочу получить месяц из даты, эти даты взяты из базы данных, поэтому некоторые даты представлены в формате ‘0000-00-00’.

//например, я привожу эту дату ниже

 $arr='0000-00-00';
$thismonth = date('m', strtotime($arr));
echo $thismonth;
  

// здесь я ожидаю чего-то типа 00 или null, но ответ равен 11.

Комментарии:

1. У PHP есть проблемы с интерпретацией этого результата даты: -0001-11-30 . Смотрите php.net/manual/de/datetime.construct.php . Возможно, это связано с тем, что григорианский календарь не определен для этой даты

2. Не связано, но почему вы называете строку $arr? Вам нравится этот вызов или что-то в этом роде?

3. На самом деле даты передаются как массив, поэтому мне нужно брать даты в месячном исчислении, поэтому здесь передаются некоторые нулевые даты

Ответ №1:

дата никогда не бывает ‘0000-00-00’ или 0 или null, в функции date вы никогда не вводите неправильное значение, поэтому проверьте

 $arr='0000-00-00';
if($arr != '0000-00-00'){
$thismonth = date('m', strtotime($arr));
echo $thismonth;
}
else{
$thismonth = '00';
}
  

Комментарии:

1. В поле даты, если пользователь забыл ввести дату. дата в базе данных сохраняется как это значение-> ‘0000-00-00’. Затем мне нужно перечислить эти значения, зависящие от месяца, поэтому 00 принимает значение 11