Если вы столкнулись с этой проблемой при использовании Maven , вы можете скомпилировать свой код с помощью подключаемого модуля Maven Compiler .
org.apache.maven.plugins
maven-compiler-plugin
3.1
1.6
.....
UPDATE: установите source
и target
на 1.8
, если вы используете JDK 8.
Поскольку вы передаете строку в качестве второго аргумента функции date, которая должна быть целым числом.
string date (string $ format [, int $ timestamp = time ()] )
Попробуйте strtotime , который будет Разбор любого текстового описания даты и времени на английском языке в метке времени Unix (целое число):
date("d", strtotime($_GET['start_date']));
Вам необходимо установить часовой пояс, используя date_default_timezone_set ().
Если ошибка во время любого вычисления, дважды проверьте, что значения не содержат запятой (,). Значения должны быть только в формате integer / float.
Просто вы можете решить эту проблему, используя функцию strtotime()
.
date("d",strtotime($_GET['start_date']));
$_GET['start_date']
не является числовой, это моя ставка, но формат даты не поддерживается strtotime
. Вам нужно будет переформатировать дату в рабочий формат для strtotime или использовать комбинацию explode / mktime .
Я мог бы добавить вам пример, если вы будете достаточно любезны, чтобы опубликовать формат, который вы в настоящее время получаете.
Это старый вопрос, но есть еще один тонкий способ, которым это сообщение может случиться. Это объясняется довольно хорошо здесь, в документах .
Представьте это 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();
}
}
Я столкнулся с той же ситуацией (в моем случае с датой в пользовательском поле PHP в представлении Drupal), и то, что сработало для меня, использовало intval вместо strtotime, чтобы превратить значение в целое число, потому что оно в основном была меткой времени, но в виде строки, а не целого. Очевидно, что это не относится ко всем, но, возможно, стоит попробовать.
Это очень помогло мне -
$new_date = date_format(date_create($old_date), 'Y-m-d');