localDate的小技巧
LocalDate | with(TemporalAdjuster adjuster) 返回此日期的调整副本。 |
---|
| |
TemporalAdjusters类的返回值是TemporalAdjuster 对象
static TemporalAdjuster | dayOfWeekInMonth(int ordinal, DayOfWeek dayOfWeek) 第ordinal个周的星期几是哪天 |
---|
static TemporalAdjuster | firstDayOfMonth() 返回当月的第一天的日期。 |
static TemporalAdjuster | firstDayOfNextMonth() 返回下个月的第一天的日期 |
static TemporalAdjuster | firstDayOfNextYear() 返回为下一年的第一天的日期。 |
static TemporalAdjuster | firstDayOfYear() 返回设置为当前年第一天的新日期。 |
static TemporalAdjuster | firstInMonth(DayOfWeek dayOfWeek) 返回本月第一个星期几是哪天 |
static TemporalAdjuster | lastDayOfMonth() 返回本月最后一天的日期 |
static TemporalAdjuster | lastDayOfYear() 返回为当前年份的最后一天的日期。 |
static TemporalAdjuster | lastInMonth(DayOfWeek dayOfWeek) 返回本月第后一个星期几是哪天 |
static TemporalAdjuster | next(DayOfWeek dayOfWeek) 即将要过得一个星期几是哪天不包含当日 |
static TemporalAdjuster | nextOrSame(DayOfWeek dayOfWeek) 正在过或者即将过的星期几是哪天 |
static TemporalAdjuster | previous(DayOfWeek dayOfWeek) 刚过去的星期几是哪天不包含当日 |
static TemporalAdjuster | previousOrSame(DayOfWeek dayOfWeek) 刚过去的星期几是哪天包含当日 |
| |
代码测试
package com.hpe.demo;
import java.time.DayOfWeek;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.temporal.TemporalAdjusters;
import java.time.temporal.TemporalField;
import java.time.temporal.TemporalUnit;
public class LocalDateTest {
public static void main(String[] args) {
LocalDate localDate = LocalDate.now();
System.out.println("本月第三个星期天是几号");
System.out.println(localDate.with(TemporalAdjusters.dayOfWeekInMonth(3, DayOfWeek.SUNDAY)));
System.out.println("本月第一天是几号");
System.out.println(localDate.with(TemporalAdjusters.firstDayOfMonth()));
System.out.println("本年第一天是几号");
System.out.println(localDate.with(TemporalAdjusters.firstDayOfYear()));
System.out.println("本月最后一天是几号");
System.out.println(localDate.with(TemporalAdjusters.lastDayOfMonth()));
System.out.println("本年最后一天是几号");
System.out.println(localDate.with(TemporalAdjusters.lastDayOfYear()));
System.out.println("下一个月第一天是几号");
System.out.println(localDate.with(TemporalAdjusters.firstDayOfNextMonth()));
System.out.println("下一年第一天是几号");
System.out.println(localDate.with(TemporalAdjusters.firstDayOfNextYear()));
System.out.println("本月第一个星期五是几号");
System.out.println(localDate.with(TemporalAdjusters.firstInMonth(DayOfWeek.FRIDAY)));
System.out.println("本月最后一个星期五是几号");
System.out.println(localDate.with(TemporalAdjusters.lastInMonth(DayOfWeek.FRIDAY)));
System.out.println("即将要过得一个星期一是哪天不包含当日");
System.out.println(localDate.with(TemporalAdjusters.next(DayOfWeek.MONDAY)));
System.out.println("即将要过得一个星期一是哪天包含当日");
System.out.println(localDate.with(TemporalAdjusters.nextOrSame(DayOfWeek.MONDAY)));
System.out.println("刚过去的一个星期五是哪天不包含当日");
System.out.println(localDate.with(TemporalAdjusters.previous(DayOfWeek.FRIDAY)));
System.out.println("刚过去的一个星期五是哪天包含当日");
System.out.println(localDate.with(TemporalAdjusters.previousOrSame(DayOfWeek.FRIDAY)));
LocalDate firstDayOfMonth = LocalDate.parse("2020-08-28")
.with(TemporalAdjusters.next(DayOfWeek.TUESDAY));
System.out.println(firstDayOfMonth);
}
}
结果
本月第三个星期天是几号
2020-08-16
本月第一天是几号
2020-08-01
本年第一天是几号
2020-01-01
本月最后一天是几号
2020-08-31
本年最后一天是几号
2020-12-31
下一个月第一天是几号
2020-09-01
下一年第一天是几号
2021-01-01
本月第一个星期五是几号
2020-08-07
本月最后一个星期五是几号
2020-08-28
即将要过得一个星期一是哪天不包含当日
2020-08-31
即将要过得一个星期一是哪天包含当日
2020-08-24
刚过去的一个星期五是哪天不包含当日
2020-08-21
刚过去的一个星期五是哪天包含当日
2020-08-21
2020-09-01
Process finished with exit code 0