Как в таблице вывести дату в нужном формате у последнего загруженного файла?
В конце кода я возвращаю в колонку таблицы дату последнего вложенного файла, но формат даты выводится так "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 шт):
Нужно отформатировать дату/таймстемп, которые возвращаются из метода 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());
}