需求说明
例如今天是2022年2月9日 星期四,要求得到今天这个周的周开始(应该是2022年2月7日 周一,当然如果定义周开始从周日开始,就是2022年2月6日 周日),得到今天这个周的周末(应该是2022年2月13日 周日,当然如果定义周结束从周六,就是2022年2月12日 周六)
初步一看,难度应该并不是特别难,但感觉总是不好实现(或者要判断很多)
实现
Java8开始有一个简单而且优雅的方式,可以方便实现这个功能:
java.time.temporal.TemporalAdjusters的previousOrSame/nextOrSame可以找到当前日期最接近的一个日期
import java.time.DayOfWeek;
import java.time.LocalDate;
import java.time.temporal.TemporalAdjusters;
LocalDate today = LocalDate.of(2022, 2, 9);
// LocalDate today = LocalDate.now(); // or
LocalDate first1 = today.with(TemporalAdjusters.previousOrSame(DayOfWeek.MONDAY));
LocalDate end1 = today.with(TemporalAdjusters.nextOrSame(DayOfWeek.SUNDAY));
System.out.println("今天日期: " + today);
System.out.println("一周从星期一开始算:");
System.out.println("本周开始: " + first1);
System.out.println("本周周末: " + end1);
System.out.println("一周从星期天开始算:");
LocalDate first2= today.with(TemporalAdjusters.previousOrSame(DayOfWeek.SUNDAY));
LocalDate end2 = today.with(TemporalAdjusters.nextOrSame(DayOfWeek.SATURDAY));
System.out.println("本周开始: " + first2);
System.out.println("本周周末: " + end2);

文章评论