Обнаруженное неверно сформированное числовое значение



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



не очень хорошо сформированное числовое значение встречается



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



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


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

659   8  

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, чтобы превратить значение в целое число - потому что это в основном была временная метка, но в виде строки, а не целого числа. Очевидно, что это не будет иметь место для всех, но это может быть стоит попробовать.

просто вы можете решить эту проблему с помощью

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

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

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

представьте себе этот 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.

вы должны установить часовой пояс с помощью date_default_timezone_set ().

Comments

    Ничего не найдено.