[Java]优雅方式实现得到当前日期最接近的周的开始和周末

2022-02-10 617点热度 0人点赞 0条评论

需求说明

例如今天是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);

 

admin

这个人很懒,什么都没留下

文章评论

您需要 登录 之后才可以评论