java8 date强大的api让你实现以前想都不敢想的操作,
如一个简单的问题:
3年4个月后的最后一个星期五是哪天?
是不是看着日历都要翻半天,更别说用代码来实现了。
莫急,先看看基本用法,代码:
LocalDate date = LocalDate.now();
System.out.println(date.with(TemporalAdjusters.firstDayOfMonth()));// 当月第一天
System.out.println(date.with(TemporalAdjusters.lastDayOfMonth())); // 当月的最后一天
// 1表示当月第一个 星期天 正数表示,第几个星期天,可能会超过当月
System.out.println(date.with(TemporalAdjusters.dayOfWeekInMonth(1,DayOfWeek.SUNDAY)));
// 注 -1表示当月最后一个 星期天 负数表示: 如-4 =-1 -3 比表示当前月最后一天,往前3星期
System.out.println(date.with(TemporalAdjusters.dayOfWeekInMonth(-1,DayOfWeek.SUNDAY)));
// 看看-3对不对,当月最后一天,减2星期
System.out.println(date.with(TemporalAdjusters.dayOfWeekInMonth(-3,DayOfWeek.SUNDAY)));
// 注 0表示上月最后一个 星期天
System.out.println(date.with(TemporalAdjusters.dayOfWeekInMonth(0,DayOfWeek.SUNDAY)));
//花式组合: 3个月的最后一个星期三,赶紧翻翻日历看对不对
System.out.println(date.plusMonths(3)
.with(TemporalAdjusters.dayOfWeekInMonth(-1,DayOfWeek.WEDNESDAY)));
现在回归到最初的问题: 3年4个月后的最后一个星期五是哪天?
System.out.println(date.plusYears(3).plusMonths(4)
.with(TemporalAdjusters.dayOfWeekInMonth(-1,DayOfWeek.FRIDAY)));