java - 是否可以将 Java 中的日期范围拆分为数周?
问题描述
我的问题如下:我有一个日期范围(在 java 中),由两个Calendar
对象指定,一个用于开始,一个用于结束。现在我想得到一个在这个范围内的所有周的列表。一周应由两个Calendar
对象指定,一个用于开始,一个用于结束。同样重要的是,整个日期范围的开始和结束可能在两个不同的月份甚至两个不同的年份。
解决方案
这是您的问题的实现,它使用新的 Time Api,阅读有关 LocalDate、LocalDateTime、Period 等的信息。
LocalDate startDate = LocalDate.of(2019, 12, 12).with(DayOfWeek.MONDAY);
LocalDate endDate = LocalDate.of(2020, 12, 12);
//number of weeks
long weekNumber = ChronoUnit.WEEKS.between(startDate, endDate);
Map<LocalDate, LocalDate> weeks = new LinkedHashMap<>();
for (int i = 0; i < weekNumber; i++) {
LocalDate endOfWeek = startDate.plusDays(6);
weeks.put(startDate, endOfWeek);
startDate = endOfWeek.plusDays(1);
}
for (LocalDate week : weeks.keySet()) {
LocalDate endOfWeek = weeks.get(week);
System.out.println("Start of week: " + week + "[" + week.getDayOfWeek() + "]" +
" End of week: " + endOfWeek + "[" + endOfWeek.getDayOfWeek() + "]");
}
它打印:
Start of week: 2020-12-07[MONDAY] End of week: 2020-12-13[SUNDAY]
Start of week: 2020-12-14[MONDAY] End of week: 2020-12-20[SUNDAY]
Start of week: 2020-12-21[MONDAY] End of week: 2020-12-27[SUNDAY]
Start of week: 2020-12-28[MONDAY] End of week: 2021-01-03[SUNDAY]
Start of week: 2021-01-04[MONDAY] End of week: 2021-01-10[SUNDAY]
ETC...
编辑:
使用 DateTimeFormatter 会更短,并且日期名称将以您的语言显示:
DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd[EEEE]");
for (LocalDate startOfWeek : weeks.keySet()) {
LocalDate endOfWeek = weeks.get(startOfWeek);
System.out.println("Start of week: " + dateTimeFormatter.format(startOfWeek) +
" End of week: " + dateTimeFormatter.format(endOfWeek));
}
推荐阅读
- c++ - 如何从 cmake 子项目中删除或覆盖编译标志
- powershell - 如何使用 powershell 更新 xml 属性值
- python - pandas groupby 根据唯一值扩展 df
- java - 导入 sun.security.ec 无法解决
- android-studio - 如何在单行注释后阻止 Android Studio 缩进下一行
- python - Python - 如何提取 XML 标签内的内容并获取标签位置?
- python - 如何在python代码中的sql命令中参数化字符串的一部分?
- odoo - Odoo 12:更新现有模块时不可见更改
- python - 如何构建可以在 Web UI 上运行的 Python 脚本
- apache-kafka - Kakfa Consumer Commit on my own offset id not working - commitSync(final Map
偏移量)