如何将 LocalDateTime yyyy-MM-dd HH:mm 格式化为 dd-MM-yyyy HH:mm 为不仅包含日期属性的整个对象列表的字符串?

How to format LocalDateTime yyyy-MM-dd HH:mm to dd-MM-yyyy HH:mm as String for a whole list of an object which contains not only a date attribute?

我正在尝试解决一个似乎很棘手的问题,但我遇到了困难。你能帮忙吗?

在 Spring 引导中,我有一个对象 Holiday 用于保存在 MySQL 数据库中的国定假日。对象 Holiday 包含以下属性:

(...)

@Column(name = "title")
private String HolidayTitle;

@Column(name = "date")
private String holidayDate;

@Column(name = "updated")
private LocalDateTime updated;

@Column(name = "country")
private String country;

(...)

但我对 updated 属性感兴趣,该属性在数据库中存储为例如 2021-10-26 20:54:48。我想将它格式化为 dd-MM-yyyy HH:mm 到 Thymeleaf,但它由具有不同属性的 Holiday 个对象列表组成。

在控制器中,正在检索列表如下:

@GetMapping("/getAllHolidays")
public String getAllHolidays(Model theModel) {
    List<Holiday> theHolidays = holidayService.findAll();
    theModel.addAttribute("holidays", theHolidays);
    return "holidays";
}

如何为列表 theHolidays 中的所有假日对象仅格式化属性 updated DateTimeFormatter?

DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd-MM-yyyy HH:mm");

是否可以通过使用 Java 流来实现?

您可以像这样使用 Java 流解析日期:

DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd-MM-yyyy HH:mm");

List<String> formattedDates = theHolidays.stream()
      .map(Holiday::getUpdated)
      .map(formatter::format)
      .collect(Collectors.toList());

但是如果您使用的是 thymeleaf,则可以像这样设置日期格式:

<tr th:each="holiday : ${holidays}">
  <td th:text="${#temporals.format(holiday.updated, 'dd-MM-yyyy HH:mm')}"></td>
</tr>