需求说明
例如今天是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);
文章评论