Как устранить эту ошибку «Исправляемая фатальная ошибка: объект класса DateTime не может быть преобразован в строку в /var/www/web/print.php в строке 9»?

0

Я хочу показать сообщение об ошибке, если дата в определенной переменной больше, чем сегодняшняя дата. Для этого я написал следующий код, но он выдал ошибку: "Обманиваемая фатальная ошибка: объект класса DateTime не может быть преобразован в строку в /var/www/web/print.php в строке 9"

<?php
  error_reporting(E_ALL);
  ini_set('display_errors', '1');
  $form_data['trans_date'] = '12-11-2014';
  $newTransDate = DateTime::createFromFormat('!m-d-Y', $form_data['trans_date']);
  $today_date = new DateTime();
  echo "Trans Date " . $newTransDate; die; //This is line no.9
  if($newTransDate > $today_date)
    echo "Error";
  else
    echo "Success";  
?>

Какие изменения необходимо внести в вышеуказанный код для того, чтобы функционировать все с правильным сопоставлением двух дат?

Теги:
datetime
date
date-comparison

2 ответа

2
Лучший ответ

Вам нужно использовать ->format() для созданного объекта DateTime, если вы хотите получить нужную дату.

echo "Trans Date " . $newTransDate->format('Y-m-d'); // and remove that die!
  • 0
    Спасибо за вашу помощь. Но, пожалуйста, дайте мне знать, правильный ли код, который я написал для сравнения двух дат?
  • 0
    @PHPLover да, нет проблем с тем, как вы сравниваете два объекта datetime в вашем if.
0

Потому как,

echo "Trans Date " . $newTransDate; die; //This is line no.9

$newTransDate - это объект и его печать с помощью echo, функция, предназначенная для печати строки.

Вы можете распечатать его с помощью:

echo '<pre>';
print_r($newTransDate);
echo '</pre>';

эхо

print_r()

  • 0
    Хорошо, спасибо за вашу помощь. Но правильно ли написан мой код для сравнения дат и написания сообщений?

Ещё вопросы

Сообщество Overcoder
Наверх
Меню