PHP: chr (& ldquo; 0x03 & rdquo;) генерирует сообщение об ошибке, почему? [Дубликат]

Если вы столкнулись с этой проблемой при использовании Maven , вы можете скомпилировать свой код с помощью подключаемого модуля Maven Compiler .

 
        
            
                org.apache.maven.plugins
                maven-compiler-plugin
                3.1
                
                    1.6
                    1.6
                
            
       .....

UPDATE: установите source и target на 1.8, если вы используете JDK 8.

81
задан Stephan Weinhold 23 April 2015 в 13:57
поделиться

8 ответов

Поскольку вы передаете строку в качестве второго аргумента функции date, которая должна быть целым числом.

string date (string $ format [, int $ timestamp = time ()] )

Попробуйте strtotime , который будет Разбор любого текстового описания даты и времени на английском языке в метке времени Unix (целое число):

date("d", strtotime($_GET['start_date']));
169
ответ дан AbraCadaver 21 August 2018 в 23:09
поделиться

Вам необходимо установить часовой пояс, используя date_default_timezone_set ().

0
ответ дан AlanP 21 August 2018 в 23:09
поделиться

Если ошибка во время любого вычисления, дважды проверьте, что значения не содержат запятой (,). Значения должны быть только в формате integer / float.

0
ответ дан Arghadeeph Halder 21 August 2018 в 23:09
поделиться

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

date("d",strtotime($_GET['start_date']));
4
ответ дан Faisal 21 August 2018 в 23:09
поделиться

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

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

6
ответ дан Geoffrey Hale 21 August 2018 в 23:09
поделиться
  • 1
    Кастинг не будет исправлять проблему, поскольку PHP будет автоматически передавать ее при передаче методу. – JohnP 26 May 2011 в 10:36
  • 2
    Проверьте мое обновление. – Wesley van Opdorp 26 May 2011 в 10:37

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

Представьте это 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();
  }
}
1
ответ дан Parris Varney 21 August 2018 в 23:09
поделиться

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

5
ответ дан spidersilk 21 August 2018 в 23:09
поделиться

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

$new_date = date_format(date_create($old_date), 'Y-m-d');
1
ответ дан Tushar Walzade 21 August 2018 в 23:09
поделиться
Другие вопросы по тегам:

Похожие вопросы: