如果日期是 12 月 31 日,Vaadin Grid 将显示错误的年份

sai*_*iko 1 java jpa vaadin spring-boot

我创建了一个 vaadin 网格,并将 setItems 方法与返回分页流的自定义 jpa 存储库结合使用。当网格必须显示具有特定日期(2019-12-31)的日期时,就会出现问题,它会自动显示“31.12.2020”,看起来日期不知何故跳到了下一年。

\n

这里是网格

\n
private Grid<Budget> createGrid() {\n        Grid<Budget> grid = new Grid<>(Budget.class, false);\n        grid.setPageSize(100);\n        grid.setSortableColumns();        \n        grid.addColumn(new LocalDateRenderer<>(Budget::getValidfrom, "dd.MM.YYYY")).setHeader("G\xc3\xbcltig von");\n        grid.addColumn(new LocalDateRenderer<>(Budget::getValidto, "dd.MM.YYYY")).setHeader("G\xc3\xbcltig bis");\n        for (Grid.Column<Budget> c : grid.getColumns()) {\n            c.setAutoWidth(true).setFlexGrow(2);\n        }\n        return grid;\n}\n
Run Code Online (Sandbox Code Playgroud)\n

这是我如何填充网格

\n
grid.setItems(query -> service.getLimitData(filter, query.getPage(), query.getPageSize()).stream());\n
Run Code Online (Sandbox Code Playgroud)\n

数据库中的数据集
\n在此输入图像描述
\nvaadin 网格中的数据集
\n在此输入图像描述

\n

Bas*_*que 6

太长了;博士

更改YYYYuuuu以更正您的格式模式。

您的问题与Vaadin无关。日期格式是标准 Java。

基于周的年与日历年

您的格式化代码不正确。

大写字母YYYY表示基于周的年份,而不是日历年。该代码使用ISO 8601 周和基于周的年份的定义:周从星期一开始,持续 7 天,第一周包含日历年的第一个星期四。这意味着基于周的一年的第一周和最后一周可能与上一个/下一个日历年有几天。

因此,您遇到的意外年份是一个功能,而不是一个错误。

对于日历年,请使用小写字母yyyyuuuu.

这些格式化模式代码记录在该类的 Javadoc 中DateTimeFormatter


归档时间:

查看次数:

118 次

最近记录:

4 年,3 月 前