当前位置 博文首页 > Inmaturity_7的博客:JDK1.8时间工具类

    Inmaturity_7的博客:JDK1.8时间工具类

    作者:[db:作者] 时间:2021-08-01 11:48

    JDK1.8时间工具类

    一、特点:比起Date类和Calendar类,jdk1.8的时间类更全面、线程安全、可修改

    二、JDK1.8各时间类特点及应用

    2.1、LocalDate类
     //取当前日期
    LocalDate today=LocalDate.now();
    System.out.println("today = " + today);
    
    输出:today = 2020-11-24
    
     //取当前日期
     LocalDate today=LocalDate.now();
     //获取当前是一周的第几天
     int dayOfWeek = today.getDayOfWeek().getValue();
     System.out.println("dayOfWeek = " + dayOfWeek);
     //获取当前日
     int dayOfMonth = today.getDayOfMonth();
     System.out.println("dayOfMonth = " + dayOfMonth);
     //获取当前是一年中的第几天
     int dayOfYear = today.getDayOfYear();
     System.out.println("dayOfYear = " + dayOfYear);
     //获取当前月
     int monthValue = today.getMonthValue();
     System.out.println("monthValue = " + monthValue);
     //获取当前年
     int year = today.getYear();
     System.out.println("year = " + year);
    
    输出:
    dayOfWeek = 2
    dayOfMonth = 24
    dayOfYear = 329
    monthValue = 11
    year = 2020
    
     //根据年月日取日期,12月就是12月,月份不需要像date和calendar类0-11
     LocalDate myDate = LocalDate.of(2020, 11, 11);
     System.out.println("myDate = " + myDate);
    
    输出:myDate = 2020-11-11
    
     //根据字符串取1:(必须严格按照格式:yyyy-MM-dd)
    LocalDate parseStr1 = LocalDate.parse("2020-11-24");
    System.out.println("parseStr1 = " + parseStr1);
    
    输出:parseStr1 = 2020-11-24
    
     //根据字符串取2:(自定义格式)
    LocalDate parseStr2 = LocalDate.parse("2020/08/02", DateTimeFormatter.ofPattern("yyyy/MM/dd"));
    System.out.println("parseStr2 = " + parseStr2);
    
    输出:parseStr2 = 2020-08-02
    
    //取本月第一天
    LocalDate firstDayOfMonth = today.with(TemporalAdjusters.firstDayOfMonth());
    System.out.println("firstDayOfMonth = " + firstDayOfMonth);
    
    输出:firstDayOfMonth = 2020-11-01
    
    //取本月第2天:
    LocalDate secondDayOfMonth = today.withDayOfMonth(2);
    System.out.println("secondDayOfMonth = " + secondDayOfMonth);
    
    输出:secondDayOfMonth = 2020-11-02
    
    //取本月最后一天
    LocalDate lastDayOfMonth = today.with(TemporalAdjusters.lastDayOfMonth());
    System.out.println("lastDayOfMonth = " + lastDayOfMonth);
    
    输出:lastDayOfMonth = 2020-11-30
    
     //取下一天
    LocalDate tomorrow = lastDayOfMonth.plusDays(1);
    System.out.println("tomorrow = " + tomorrow);
    
    输出:tomorrow = 2020-12-01
    
     //取2020年11月第一个周一
    LocalDate firstMondayOf2020 = LocalDate.parse("2020-11-01").with(TemporalAdjusters.firstInMonth(DayOfWeek.MONDAY));
    System.out.println("firstMondayOf2020 = " + firstMondayOf2020);
    
    输出:firstMondayOf2020 = 2020-11-02
    
    //几个使用方法
    LocalDate today = LocalDate.now();
    
    //判断 today 是否为闰年
    boolean isLeapYear = today.isLeapYear();
    System.out.println("isLeapYear = " + isLeapYear);
    
    //获取 today 是该年的第几季度
    int quarterOfYear = today.get(IsoFields.QUARTER_OF_YEAR);
    System.out.println("quarterOfYear = " + quarterOfYear);
    
    //获取 today 是该季度的第几天
    int daysOfQuarter = today.get(IsoFields.DAY_OF_QUARTER);
    System.out.println("daysOfQuarter = " + daysOfQuarter);
    
    输出:
    isLeapYear = true
    quarterOfYear = 4
    daysOfQuarter = 55
    
    2.2、LocalTime类
    //获取当前时间(带有毫秒)
    LocalTime timeMills = LocalTime.now();
    System.out.println("timeMills = " + timeMills);
    //在timeMills的基础上获取不带毫秒的time
    //nanoSecond纳秒,十亿分之一秒
    LocalTime time1 = timeMills.withNano(0);
    System.out.println("time1 = " + time1);
    
    //设置并得到时间对象
    LocalTime time2 = LocalTime.of(12, 00, 00);
    System.out.println("time2 = " + time2);
    
    //解析时间字符串
    LocalTime parseStr1 = LocalTime.parse("12:30:00");
    System.out.println("parseStr1 = " + parseStr1);
    LocalTime parseStr2 = LocalTime.parse("12时30分00秒", DateTimeFormatter.ofPattern("HH时mm分ss秒"));
    System.out.println("parseStr2 = " + parseStr2);
    
    //获取一天的第多少秒的时间对象
    LocalTime time3 = LocalTime.ofSecondOfDay(18 * 60 * 60 + 60 * 30);
    System.out.println("time3 = " + time3);
    
    //MIN、MAX、 NOON、 MIDNIGHT
    //MIN和MIDNIGHT都是00:00,意味一天的开始
    //NOON是中午12:00,意味着半天
    //MAX是23:59:59.999999999,意味着一天的结束
    System.out.println("MIN = " + LocalTime.MIN);
    System.out.println("MIDNIGHT = " + LocalTime.MIDNIGHT);
    System.out.println("NOON = " + LocalTime.NOON);
    System.out.println("MAX = " + LocalTime.MAX);
    
    输出:
    timeMills = 22:58:55.326
    time1 = 22:58:55
    time2 = 12:00
    parseStr1 = 12:30
    parseStr2 = 12:30
    time3 = 18:30
    MIN = 00:00
    MIDNIGHT = 00:00
    NOON = 12:00
    MAX = 23:59:59.999999999
    
    //获取当前时间(带有毫秒)
    LocalTime timeMills = LocalTime.now();
    System.out.println("timeMills = " + timeMills);
    //在timeMills的基础上获取不带毫秒的time
    //nanoSecond纳秒,十亿分之一秒
    LocalTime time = timeMills.withNano(0);
    System.out.println("time = " + time);
    
    //获取时
    int hour = time.getHour();
    System.out.println("hour = " + hour);
    //获取分
    int minute = time.getMinute();
    System.out.println("minute = " + minute);
    //获取秒
    int second = time.getSecond();
    System.out.println("second = " + second);
    
    //下班时间
    LocalTime workOver = LocalTime.of(18, 30, 00);
    
    //睡觉时间
    LocalTime sleepTime = LocalTime.of(23, 30, 00);
    
    //判断现在是否是下班时间
    boolean after = time.isAfter(workOver);
    System.out.println("after = " + after);
    //判断现在是否是睡觉时间
    boolean before = time.isBefore(sleepTime);
    System.out.println("before = " + before);
    
    //现在和下班时间比较
    int i = time.compareTo(workOver);
    System.out.println("i = " + i);
    //现在和睡觉时间比较
    int j = time.compareTo(sleepTime