PHP: strtotime возвращает «ничего» типа «boolean»

У меня есть переменная $EDate , я использовал функцию strtotime с этой переменной с разными значениями, и результат был следующим:

 $EDate = 10-21-2013; echo "strtotime($EDate)"; the result = nothing and the type is boolean $EDate = 09-02-2013; echo "strtotime($EDate)"; the result = 1360386000 and the type is integer $EDate = 09-30-2013; echo "strtotime($EDate)"; the result = nothing and the type is boolean $EDate = 09-30-2013; echo "strtotime($EDate)"; the result = nothing and the type is boolean $EDate = 07-02-2014; echo "strtotime($EDate)"; the result = 1391749200 and the type is integer $EDate = 10-12-2014; echo "strtotime($EDate)"; the result = 1418187600 and the type is integer 

Может ли кто-нибудь объяснить это и как избежать логического результата?

Solutions Collecting From Web of "PHP: strtotime возвращает «ничего» типа «boolean»"

Из документации :

Даты в форматах m / d / y или dmy устраняются неоднозначно, глядя на разделитель между различными компонентами: если разделитель является косой чертой (/), то предполагается, что американский m / d / y; тогда как если разделитель является тире (-) или точкой (.), тогда предполагается европейский формат dmy.

Ваш код предполагает, что дата находится в формате dmy и вернет FALSE поскольку значения месяца неверны:

 var_dump(strtotime('10-21-2013')); // no month 21 var_dump(strtotime('09-30-2013')); var_dump(strtotime('09-30-2013')); 

Если вы хотите использовать пользовательские форматы, вместо этого используйте DateTime::createFromFormat() :

 $date = DateTime::createFromFormat('md-Y', '10-21-2013'); echo $date->format('U'); 

Демо!

Изменить: этот ответ больше не применяется к вопросу, см. Мой комментарий ниже.

Поместите свои значения в кавычки, чтобы они стали строкой:

 $EDate = '10-21-2013'; ... 

Ваш текущий код выполняет математическое вычитание: 10 – 12 – 2013 = -2015.