конвертация даты thymeleaf spring

#thymeleaf

#thymeleaf

Вопрос:

Это моя модель данных

Это моя модель данных. Я хочу использовать дату отсюда.

Я делаю это в своем html:

 <table th:if="${!commentsInTask.empty}">

    <tbody>
    <tr th:each="Comments : ${commentsInTask}">
    <tr th:each="comment : ${Comments}">
        <td th:text="${comment.user}">user ...</td>

        <td th:text="${comment.createdAt}">date ...</td>
    </tr>
    </tr>
    </tbody>
</table>
  

но это приносит:

 <table>

    <tbody>
         <td>JACK</td>

        <td>1.476787930289E9</td>
    </tr>
    </tr>
    </tbody>
</table>
  

Эта часть представляет собой временную дату unix:
1.476787930289E9

но на картинке в начале, которую я опубликовал, вы видели. Timme — это не так.

Это в домене

     public String getCreatedAtString() {
        return createdAtString;
    }

    public TaskComment setCreatedAtString(String createdAtString) {
        this.createdAtString = createdAtString;
        return this;
    }
private ZonedDateTime createdAt = ZonedDateTime.now();
  

Почему я не могу видеть в формате даты, который на картинке в начале?

Ответ №1:

Используйте форматирование Thymeleaf:

 <td th:text="${#dates.format(comment.createdAt, 'dd-MM-yyyy HH:mm:ss')}">date</td>
  

Вы получите выходные данные в следующем формате: 18-Oct-2016 14:44:05 .

#dates : методы для java.util.Date объектов: форматирование, извлечение компонентов и т. Д.


Чтобы преобразовать ваше createdAt поле в java.util.Date тип, используйте:

 Date date = Date.from(java.time.ZonedDateTime.now().toInstant());
  

Или просто используйте java.util.Date тип:

 private Date createdAt = new Date();
  

для этого будет установлена cheatedAt текущая дата.


Также вы можете добавить зависимость thymeleaf-extras-java8time в свой проект для работы с вашим ZonedDateTime типом.

Этот модуль добавляет #temporals объект, аналогичный #dates или #calendars в стандартном диалекте, позволяя форматировать и создавать временные объекты из шаблонов Thymeleaf:

введите описание изображения здесь

Затем вы можете использовать ZoneDateTime с указанным шаблоном:

 ${#temporals.format(temporal, 'dd/MM/yyyy HH:mm')}
  

Смотрите больше в Thymeleaf — модуле для совместимости с Java 8 Time API.

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

1. 18/10/2016 13:51 что насчет этого?

2. Так и будет dd/MM/YYYY HH:mm . Вы можете использовать любой шаблон там, пожалуйста, посмотрите больше информации здесь: docs.oracle.com/javase/7/docs/api/java/text /…

3. org.thymeleaf.исключения. Исключение TemplateProcessingException: исключение, оценивающее выражение SpringEL: «#dates.format(comment.createdAt, ‘дд / ММ / ГГГГ ЧЧ: мм’)» (task_comment_cta:33)

4. это потому, что тип createdAt есть ZonedDateTime . Я обновил ответ, проверьте его, пожалуйста.

5. Существует также другой способ использования java.time типов в Thymeleaf. Но тогда вам нужно добавить еще одну зависимость к вашему проекту. Посмотрите на мой обновленный ответ.