Обнаруженное неверно сформированное числовое значение
У меня есть форма, которая передает две даты (начало и конец) в php-скрипт, который добавит их в БД. У меня возникли проблемы с проверкой этого. Я продолжаю получать следующие ошибки
не очень хорошо сформированное числовое значение встречается
Это когда я использую следующий
date("d",$_GET['start_date']);
но когда я использую strtotime () функция, как советуют многие сайты я получаю unix timestamp дата 1/1/1970.
Любые идеи, как я могу получить правильная дата?
8 ответов:
потому что вы передаете строку в качестве второго аргумента функции date, которое должно быть целым числом.
string date ( string $format [, int $timestamp = time () ])
попробовать strtotime что будет разбор любого английского текстового описания datetime в метку времени Unix (целое число):
date("d", strtotime($_GET['start_date']));
$_GET['start_date']не числовой-это моя ставка, но формат даты не поддерживаетсяstrtotime. Вам нужно будет переформатировать дату в работоспособный формат для strtotime или использовать комбинацию взрываться/ mktime.я мог бы добавить вам пример, если вы будете достаточно любезны, чтобы опубликовать формат, который вы в настоящее время получаете.
Я столкнулся с такой же ситуацией (в моем случае со значением даты в пользовательском поле PHP в представлении Drupal), и то, что сработало для меня, использовало intval вместо strtotime, чтобы превратить значение в целое число - потому что это в основном была временная метка, но в виде строки, а не целого числа. Очевидно, что это не будет иметь место для всех, но это может быть стоит попробовать.
это старый вопрос, но есть еще один тонкий способ это сообщение может произойти. Это объясняется довольно хорошо здесь, в документах.
представьте себе этот scenerio:
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(); } }
Если ошибка во время любой расчет, дважды проверьте, что значения не содержит запятую(,). Значения должны быть только в формате integer / float.
Comments