如果日期是 12 月 31 日,Vaadin Grid 显示错误的年份
Vaadin Grid shows wrong year if date is the 31th of December
我创建了一个 vaadin 网格并将 setItems 方法与 returns 分页流的自定义 jpa 存储库结合使用。当网格必须显示具有特定日期(2019-12-31)的日期时出现问题,它会自动显示“31.12.2020”,看起来日期不知何故跳到了下一年。
这里是网格
private Grid<Budget> createGrid() {
Grid<Budget> grid = new Grid<>(Budget.class, false);
grid.setPageSize(100);
grid.setSortableColumns();
grid.addColumn(new LocalDateRenderer<>(Budget::getValidfrom, "dd.MM.YYYY")).setHeader("Gültig von");
grid.addColumn(new LocalDateRenderer<>(Budget::getValidto, "dd.MM.YYYY")).setHeader("Gültig bis");
for (Grid.Column<Budget> c : grid.getColumns()) {
c.setAutoWidth(true).setFlexGrow(2);
}
return grid;
}
这是我如何填充网格
grid.setItems(query -> service.getLimitData(filter, query.getPage(), query.getPageSize()).stream());
数据库中的数据集
vaadin 网格中的数据集
tl;博士
将 YYYY
更改为 uuuu
以更正格式模式。
您的问题与 Vaadin 具体无关。日期格式是标准的 Java.
Week-based 年与日历年
您的格式代码不正确。
大写 YYYY
表示 week-based 年 ,而不是日历年。该代码使用 ISO 8601 definition of weeks 和 week-based 年份:周从星期一开始,运行整整 7 天,第一周包含日历年的第一个星期四。这意味着 week-based 年的第一周和最后几周可能比 previous/next 日历年有几天。
所以你遇到的意外年份是一个特性,而不是一个错误。
对于 calendar-year,使用小写 yyyy
或 uuuu
.
这些格式化模式代码记录在 Java文档中 DateTimeFormatter
class。
我创建了一个 vaadin 网格并将 setItems 方法与 returns 分页流的自定义 jpa 存储库结合使用。当网格必须显示具有特定日期(2019-12-31)的日期时出现问题,它会自动显示“31.12.2020”,看起来日期不知何故跳到了下一年。
这里是网格
private Grid<Budget> createGrid() {
Grid<Budget> grid = new Grid<>(Budget.class, false);
grid.setPageSize(100);
grid.setSortableColumns();
grid.addColumn(new LocalDateRenderer<>(Budget::getValidfrom, "dd.MM.YYYY")).setHeader("Gültig von");
grid.addColumn(new LocalDateRenderer<>(Budget::getValidto, "dd.MM.YYYY")).setHeader("Gültig bis");
for (Grid.Column<Budget> c : grid.getColumns()) {
c.setAutoWidth(true).setFlexGrow(2);
}
return grid;
}
这是我如何填充网格
grid.setItems(query -> service.getLimitData(filter, query.getPage(), query.getPageSize()).stream());
数据库中的数据集
vaadin 网格中的数据集
tl;博士
将 YYYY
更改为 uuuu
以更正格式模式。
您的问题与 Vaadin 具体无关。日期格式是标准的 Java.
Week-based 年与日历年
您的格式代码不正确。
大写 YYYY
表示 week-based 年 ,而不是日历年。该代码使用 ISO 8601 definition of weeks 和 week-based 年份:周从星期一开始,运行整整 7 天,第一周包含日历年的第一个星期四。这意味着 week-based 年的第一周和最后几周可能比 previous/next 日历年有几天。
所以你遇到的意外年份是一个特性,而不是一个错误。
对于 calendar-year,使用小写 yyyy
或 uuuu
.
这些格式化模式代码记录在 Java文档中 DateTimeFormatter
class。