java - 如何显示两个日期之间的所有星期一?
问题描述
我尝试在两个日期之间显示所有星期一,但我不知道该怎么做。我想要求用户使用扫描仪输入两个日期,以输出所有星期一。
String s = "2020-07-20";
String e = "2020-09-20";
LocalDate start = LocalDate.parse(s);
LocalDate end = LocalDate.parse(e);
List<LocalDate> totalDates = new ArrayList<>();
while (!start.isAfter(end)) {
totalDates.add(start);
start = start.plusDays(1);
}
解决方案
要获得第一个星期一,请使用:
LocalDate monday = start.with(TemporalAdjusters.nextOrSame(DayOfWeek.MONDAY));
现在您必须处理一个极端情况:如果start
和之间没有星期一end
怎么办?这意味着这里计算的星期一是在以下时间之后end
:
if (monday.isAfter(end)) {
totalDates = List.of();
}
之后,您可以使用方便的方法获得一系列星期一datesUntil
:
totalDates = monday.datesUntil(end, Period.ofWeeks(1)).collect(Collectors.toList());
请注意,datesUntil
不包括结束日期。如果您需要包含结束日期,请传入end.plusDays(1)
.
推荐阅读
- reactjs - 在 Reactide 的发布版本中找不到可执行文件
- html - 嵌套的 ngFor 仅显示顶级集合元素
- python - 如何在为以下代码使用结构时添加超时?
- python - 如何将int数组转换回熊猫时间戳?
- c++ - 如何改进我的简单工厂模式?
- python - Windows - 为什么 Win32com 应用程序不能以 .py 或 .pyw 模式运行?
- mysql - Mysql用事务在多个表中插入多行
- azure - 如何将 Microsoft Access 数据库引擎或 OLEDB 安装到 Azure SQL 数据库
- c# - 具有通用处理程序和查询的 Mediatr
- c# - 在 Startup 中合并 aspnetcore 项,无需重复服务注册或管道