JDK8 :新特性 localDate的小技巧

localDate的小技巧

LocalDatewith(TemporalAdjuster adjuster) 返回此日期的调整副本。

TemporalAdjusters类的返回值是TemporalAdjuster 对象

static TemporalAdjusterdayOfWeekInMonth(int ordinal, DayOfWeek dayOfWeek) 第ordinal个周的星期几是哪天
static TemporalAdjusterfirstDayOfMonth()返回当月的第一天的日期。
static TemporalAdjusterfirstDayOfNextMonth() 返回下个月的第一天的日期
static TemporalAdjusterfirstDayOfNextYear() 返回为下一年的第一天的日期。
static TemporalAdjusterfirstDayOfYear() 返回设置为当前年第一天的新日期。
static TemporalAdjusterfirstInMonth(DayOfWeek dayOfWeek) 返回本月第一个星期几是哪天
static TemporalAdjusterlastDayOfMonth() 返回本月最后一天的日期
static TemporalAdjusterlastDayOfYear() 返回为当前年份的最后一天的日期。
static TemporalAdjusterlastInMonth(DayOfWeek dayOfWeek) 返回本月第后一个星期几是哪天
static TemporalAdjusternext(DayOfWeek dayOfWeek) 即将要过得一个星期几是哪天不包含当日
static TemporalAdjusternextOrSame(DayOfWeek dayOfWeek) 正在过或者即将过的星期几是哪天
static TemporalAdjusterprevious(DayOfWeek dayOfWeek) 刚过去的星期几是哪天不包含当日
static TemporalAdjusterpreviousOrSame(DayOfWeek dayOfWeek)刚过去的星期几是哪天包含当日

代码测试

package com.hpe.demo;
/*
 @author  hhf
 @date   2020/8/24-15:41
*/


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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值