У меня есть форма, которая передает две даты (начало и конец) скрипту 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');