Как в таблице вывести дату в нужном формате у последнего загруженного файла?

В конце кода я возвращаю в колонку таблицы дату последнего вложенного файла, но формат даты выводится так "The Aug 26 16:45:55 SAMT 2021". Я хочу сделать другой вывод "dd.mm.yyyy" , как это возможно осуществить? Вот код:

@Override
public Component generateCell(T entity) {
    String dataLastAttachment = "";
    List<CardAttachment> attachments = entity.getAttachments();

    if (CollectionUtils.isNotEmpty(attachments)) {
        CardAttachment attachment = attachments.get(attachments.size() - 1);
        dataLastAttachment = attachment.getCreateTs().toString();
    }

    return new Table.PlainTextCell(dataLastAttachment);

Ответы (1 шт):

Автор решения: Alex Rudenko

Нужно отформатировать дату/таймстемп, которые возвращаются из метода createTs, используя нужный формат.

Для этого можно применить либо SimpleDateFormat, если createTs возвращает экземпляр класса java.util.Date:

import java.text.*;

// ...
@Override
public Component generateCell(T entity) {
    String dataLastAttachment = "";
    List<CardAttachment> attachments = entity.getAttachments();

    if (CollectionUtils.isNotEmpty(attachments)) {

        CardAttachment attachment = attachments.get(attachments.size() - 1);

        DateFormat sdf = new SimpleDateFormat("dd.MM.yyyy");

        dataLastAttachment = sdf.format(attachment.getCreateTs());
    }

    return new Table.PlainTextCell(dataLastAttachment);
}

Если метод createTs() возвращает экземпляр Instant / ZonedDateTime / LocalDateTime из Java Date/Time API, для форматирования следует использовать DateTimeFormatter с аналогичным паттерном (в случае Instant нужно обязательно задать часовой пояс):

import java.time.*;
import java.time.format.*;

// ...

    if (CollectionUtils.isNotEmpty(attachments)) {
        // предполагается что список отсортирован по дате
        CardAttachment attachment = attachments.get(attachments.size() - 1);

        DateTimeFormatter formatter = DateTimeFormatter
            .ofPattern("dd.MM.uuuu")
            .withZone(ZoneId.systemDefault());

        dataLastAttachment = formatter.format(attachment.getCreateTs());
    }
→ Ссылка