Почему DateTime :: createFromFormat () возвращает логическое значение и показывает ошибку отсутствия данных? - PullRequest
0 голосов
/ 27 сентября 2019

Когда я запускаю этот код.Я получил эту ошибку:

Неустранимая ошибка: необученная ошибка: вызов функции формата члена () для bool в /Users/xxx/xxx/xxx/www/login/user/save.php:18 Трассировка стека: # 0 {main} добавлено в /Users/xxx/xxx/xxx/www/login/user/save.php в строке 18.

Что-то не так с format() функция?

Когда я использую это:

var_dump($tmp);
var_dump(DateTime::CreateFromFormat("m/d/Y", $_POST['start_date']));
var_dump(DateTime::getLastErrors("m/d/Y", $_POST['start_date']));

попытаться получить сообщение об ошибке, оно показывает:

bool(false)
bool(false)
array(4) {
  ["warning_count"]=> int(0)
  ["warnings"]=> array(0) { }
  ["error_count"]=> int(1)
  ["errors"]=> array(1) {
    [0]=> string(12) "Data missing"
  }
}
$_POST = array_map('stripslashes', $_POST);
$tmp = DateTime::CreateFromFormat("m/d/Y", $_POST['start_date']);
//var_dump....
$start_date = $tmp->format("Y-m-d");
$tmp = DateTime::CreateFromFormat("m/d/Y", $_POST['end_date']);
$end_date = $tmp->format("Y-m-d");

Ответы [ 2 ]

0 голосов
/ 30 сентября 2019

Неустранимая ошибка появляется из-за отсутствия данных, поэтому возвращает bool (false).Если я наберу определенное время в форме главной страницы, а затем на первой странице будут показаны данные: object (DateTime) # 7 (3) {["date"] => string (26) "2019-09-30 15:09: 14.000000 "[" timezone_type "] => int (3) [" timezone "] => string (3)" UTC "}.И это хорошо работает для вставки в базу данных.Спасибо за вашу помощь и руководство!

0 голосов
/ 28 сентября 2019

Обязательно начинайте с правильного регистра функции с более низкой 'c'.

DateTime :: createFromFormat ()

$tmp = DateTime::createFromFormat("m/d/Y", $_POST['start_date']);

Этот метод возвращает либоDateTime объект или false при ошибке.В вашем случае это выглядит так: $tmp является ложным (из-за неправильного вызова функции?), И вы не можете вызвать format () для логического значения, о чем говорит сообщение об ошибке.

Так что проверьте перед применением.

if($tmp) $start_date = $tmp->format("Y-m-d");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...