Неверно сформированное числовое значение

У меня есть форма, которая передает две даты (начало и конец) скрипту PHP, который добавит их в БД. У меня возникают проблемы с подтверждением этого. Я продолжаю получать следующие ошибки

Неверно сформированное числовое значение

Это когда я использую следующие

date("d",$_GET['start_date']); 

Но когда я использую функцию strtotime (), как рекомендовано многими сайтами, я получаю временную отметку unix 1/1/1970. Любые идеи, как я могу получить правильную дату?

Это может быть потому, что вы передаете строку в качестве второго аргумента функции даты. Попробуйте strtotime :

 date("d",strtotime($_GET['start_date'])); 

$_GET['start_date'] не является числовой, это моя ставка, но формат даты не поддерживается strtotime . Вам нужно будет переформатировать дату в рабочий формат для strtotime или использовать комбинацию explode / mktime .

Я мог бы добавить вам пример, если вы будете достаточно любезны, чтобы опубликовать формат, который вы в настоящее время получаете.

Я столкнулся с той же ситуацией (в моем случае с датой в пользовательском поле PHP в представлении Drupal), и то, что сработало для меня, использовало intval вместо strtotime, чтобы превратить значение в целое число, потому что в основном это была метка времени , но в виде строки, а не целого. Очевидно, что это не относится ко всем, но, возможно, стоит попробовать.

Просто вы можете решить эту проблему, используя strtotime() .

 date("d",strtotime($_GET['start_date'])); 

Это старый вопрос, но есть еще один тонкий способ, которым это сообщение может случиться. Это объясняется здесь довольно хорошо , в документах .

Представьте себе этот сценарий:

 try { // code that triggers a pdo exception } catch (Exception $e) { throw new MyCustomExceptionHandler($e); } 

И MyCustomExceptionHandler определяется примерно так:

 class MyCustomExceptionHandler extends Exception { public function __construct($e) { parent::__construct($e->getMessage(), $e->getCode()); } } 

Это фактически вызовет новое исключение в настраиваемом обработчике исключений, потому что класс Exception ожидает число для второго параметра в его конструкторе, но PDOException может динамически изменить возвращаемый тип $e->getCode() в строку.

Обходным путем для этого будет определение вашего пользовательского обработчика исключений, например:

 class MyCustomExceptionHandler extends Exception { public function __construct($e) { parent::__construct($e->getMessage()); $this->code = $e->getCode(); } } 

Это очень помогло мне –

 $new_date = date_format(date_create($old_date), 'Ym-d');