Symfony 5 преобразует строку в datetime

#symfony #datetime

#symfony #datetime

Вопрос:

В Symfony 5 у меня есть форма, в которой пользователи вводят текстовые поля, а также дату. Затем это перенаправляется в контроллер отображения, который отображает соответствующие строки из базы данных. Для работы перенаправления дату необходимо преобразовать в строку.

         $firstName = $findPt->getFirstName();
        $surname = $findPt->getSurname();
        $username = $findPt->getUsername();
        $dob = $findPt->getDateOfBirth();
        $dobStringValue = $dob->format('Y-m-d');
        
        return $this->redirectToRoute('app_displayClients', ['firstName' => $firstName,
                                        'surname' => $surname, 
                                        'username' => $username,
                                        'dob' => $dobStringValue]);
  

Однако в контроллере отображения мне затем нужно преобразовать его обратно в datetime, чтобы использовать его, но это кажется невозможным. Я пробовал различные варианты, такие как $dobDateTime= новое время даты ($dateStr);

Пожалуйста, дайте мне знать, если этот вопрос неясен или вам нужна дополнительная информация.

Заранее большое спасибо за любую помощь.

Ответ №1:

Вы можете повторно преобразовать ее с помощью DateTime::createFromFormat

 $dobStringValue = $dob->format('Y-m-d');
$dobReconverted = DateTime::createFromFormat('Y-m-d', $dobStringValue); 
  

Комментарии:

1. Спасибо за ответ, я пробовал подобные альтернативы, но при использовании Symfony выдает ошибку: попытка загрузить класс «DateTime» из пространства имен «App Controller». Вы забыли инструкцию «use» для «Symfony Component Validator Constraints DateTime»?

2. возможно, вам придется добавить перед DateTime, если вы не вводите DateTime

Ответ №2:

Спасибо Agnohendrix, это было полезно. Мне не нужно было форматировать, поскольку это уже была строка, но я использовал $dobReconverted = DateTime::createFromFormat(‘Y-m-d’, $dobStringValue); Казалось, что заставило это работать, возможно, это как-то связано с использованием Symfony.

Ответ №3:

Он работает с » Datetime», а не с «Datetime», потому что для работы «Datetime» необходимо определить с помощью «использовать Datetime»; вот почему вышла ошибка «Вы забыли использовать инструкцию для …».