欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java1.8中LocalDate方法使用總結(jié)

 更新時(shí)間:2024年03月18日 11:23:26   作者:keep?one's?resolveY  
LocalDate是Java8中的一個(gè)日期類(lèi),用于表示年月日,它是不可變的,線(xiàn)程安全的,下面這篇文章主要給大家介紹了關(guān)于Java1.8中LocalDate方法使用的相關(guān)資料,需要的朋友可以參考下

前言:

由于之前想要用Java實(shí)現(xiàn)日歷的打印以及找到相應(yīng)的尋找休息日,所以在這方面尋找相應(yīng)的資料并進(jìn)行總結(jié)歸納
Java中1.8之前有date類(lèi)和calendar類(lèi)。其中date類(lèi)到了1.8大部分的方法被棄用了說(shuō)明這些方法都有很大的缺陷,而且date類(lèi)如果不格式化可讀性十分差,所以就需要格式化,而格式化使用simpledateformat來(lái)進(jìn)行操作線(xiàn)程不安全。而calendar類(lèi)是一個(gè)共享變量,而且沒(méi)有做線(xiàn)程不安全,當(dāng)多個(gè)線(xiàn)程同時(shí)使用simpledateformat調(diào)用format方法時(shí),多個(gè)線(xiàn)程會(huì)同時(shí)調(diào)用calendar.setTime方法,而導(dǎo)致的后果時(shí)time值一直被修改從而返回的格式化的時(shí)間是錯(cuò)誤的。而且simpledateformat方法中format和parse方法都是線(xiàn)程不安全的。

Java1.8之后出現(xiàn)了localdate,localdatetime,localtime這些類(lèi),而這些類(lèi)使用了final來(lái)修飾,使得這些類(lèi)是不可變的,一旦實(shí)例化,值就固定了,有點(diǎn)類(lèi)似于String類(lèi),所以這些類(lèi)都是線(xiàn)程安全的。

localdate是針對(duì)于年月日的,localtime是針對(duì)于時(shí)分秒,localdatetime是針對(duì)于年月日時(shí)分秒

localDate時(shí)間創(chuàng)建方式

	/**
     * localDate時(shí)間創(chuàng)建方式
     * 獲取當(dāng)前時(shí)間
     */
    @Test
    public void localDateCreate() {
        LocalDate yyyyMMdd = LocalDate.now();
        LocalTime HHmmssSSS = LocalTime.now();
        LocalDateTime yyyyMMddHHmmssSSS = LocalDateTime.now();
        System.out.println("年月日: " + yyyyMMdd);
        System.out.println("時(shí)分秒毫秒: " + HHmmssSSS);
        System.out.println("年月日時(shí)分秒毫秒: " + yyyyMMddHHmmssSSS);
        //輸出:
        //        年月日: 2020-10-16
        //        時(shí)分秒毫秒: 09:55:49.448
        //        年月日時(shí)分秒毫秒: 2020-10-16T09:55:49.448
    }

localDate 設(shè)值自定義日期 根據(jù)指定日期/時(shí)間創(chuàng)建對(duì)象

	/**
     * localDate 設(shè)值自定義日期
     * 根據(jù)指定日期/時(shí)間創(chuàng)建對(duì)象
     */
    @Test
    public void setDate() {
        LocalDate yyyyMMdd = LocalDate.of(2020, 10, 15);
        LocalTime HHmmssSSS = LocalTime.of(10, 10, 10);
        LocalDateTime yyyyMMddHHmmssSSS = LocalDateTime.of(2020, 10, 15, 10, 10);
        System.out.println("自定義的年月日: " + yyyyMMdd);
        System.out.println("自定義時(shí)分秒毫秒: " + HHmmssSSS);
        System.out.println("自定義年月日時(shí)分秒毫秒: " + yyyyMMddHHmmssSSS);

        //輸出:
        //        自定義的年月日: 2020-10-15
        //        自定義時(shí)分秒毫秒: 10:10:10
        //        自定義年月日時(shí)分秒毫秒: 2020-10-15T10:10
    }

日期時(shí)間的加減

	/**
     * 日期時(shí)間的加減
     */
    @Test
    public void lessOrAddDate() {
        LocalDate yyyyMMdd = LocalDate.now();
        LocalDate addOneDay = yyyyMMdd.plusDays(1L); //添加一日
        LocalDate addOneMonths = yyyyMMdd.plusMonths(1L);//添加一月
        LocalDate addOneYears = yyyyMMdd.plusYears(1L);//添加一年
        LocalDate addOneWeeks = yyyyMMdd.plusWeeks(1L);//添加一周

        LocalDate delOneDay = yyyyMMdd.minusDays(1L); //減去一日
        LocalDate delOneMonths = yyyyMMdd.minusMonths(1L);//減去一月
        LocalDate delOneYears = yyyyMMdd.minusYears(1L);//減去一年
        LocalDate delOneWeeks = yyyyMMdd.minusWeeks(1L);//減去一周
        System.out.println("LocalDate yyyyMMdd 當(dāng)前時(shí)間: " + yyyyMMdd);
        System.out.println("*********LocalDate yyyyMMdd 添加 操作*********");
        System.out.println("LocalDate yyyyMMdd 添加一日: " + addOneDay);
        System.out.println("LocalDate yyyyMMdd 添加一月: " + addOneMonths);
        System.out.println("LocalDate yyyyMMdd 添加一年: " + addOneYears);
        System.out.println("LocalDate yyyyMMdd 添加一周: " + addOneWeeks);
        System.out.println("*********LocalDate yyyyMMdd 減 操作*********");
        System.out.println("LocalDate yyyyMMdd 減去一日: " + delOneDay);
        System.out.println("LocalDate yyyyMMdd 減去一月: " + delOneMonths);
        System.out.println("LocalDate yyyyMMdd 減去一年: " + delOneYears);
        System.out.println("LocalDate yyyyMMdd 減去一周: " + delOneWeeks);
        System.out.println("####################################################################");
        LocalTime HHmmssSSS = LocalTime.now();
        LocalTime addOneHours = HHmmssSSS.plusHours(1L); //添加1小時(shí)
        LocalTime addOneMinutes = HHmmssSSS.plusMinutes(1L);//添加1分鐘
        LocalTime addOneSeconds = HHmmssSSS.plusSeconds(1L);//添加1秒
        LocalTime addOneNanos = HHmmssSSS.plusNanos(1L);//添加1納秒

        LocalTime delOneHours = HHmmssSSS.minusHours(1L); //減去1小時(shí)
        LocalTime delOneMinutes = HHmmssSSS.minusMinutes(1L);//減去1分鐘
        LocalTime delOneSeconds = HHmmssSSS.minusSeconds(1L);//減去1秒
        LocalTime delOneNanos = HHmmssSSS.minusNanos(1L);//減去1納秒

        System.out.println("LocalTime HHmmssSSS 當(dāng)前時(shí)間: " + HHmmssSSS);
        System.out.println("*********LocalTime HHmmssSSS 添加 操作*********");
        System.out.println("LocalTime HHmmssSSS 添加1小時(shí): " + addOneHours);
        System.out.println("LocalTime HHmmssSSS 添加1分鐘: " + addOneMinutes);
        System.out.println("LocalTime HHmmssSSS 添加1秒: " + addOneSeconds);
        System.out.println("LocalTime HHmmssSSS 添加1納秒: " + addOneNanos);
        System.out.println("*********LocalTime HHmmssSSS 減 操作*********");
        System.out.println("LocalTime HHmmssSSS 減去1小時(shí): " + delOneHours);
        System.out.println("LocalTime HHmmssSSS 減去1分鐘: " + delOneMinutes);
        System.out.println("LocalTime HHmmssSSS 減去1秒: " + delOneSeconds);
        System.out.println("LocalTime HHmmssSSS 減去1納秒: " + delOneNanos);
        System.out.println("####################################################################");
        LocalDateTime yyyyMMddHHmmssSSS = LocalDateTime.now();
        LocalDateTime localDateTimeaddOneDay = yyyyMMddHHmmssSSS.plusDays(1L); //添加一日
        LocalDateTime localDateTimeaddOneMonths = yyyyMMddHHmmssSSS.plusMonths(1L);//添加一月
        LocalDateTime localDateTimeaddOneYears = yyyyMMddHHmmssSSS.plusYears(1L);//添加一年
        LocalDateTime localDateTimeaddOneWeeks = yyyyMMddHHmmssSSS.plusWeeks(1L);//添加一周
        LocalDateTime localDateTimeaddOneHours = yyyyMMddHHmmssSSS.plusHours(1L); //添加1小時(shí)
        LocalDateTime localDateTimeaddOneMinutes = yyyyMMddHHmmssSSS.plusMinutes(1L);//添加1分鐘
        LocalDateTime localDateTimeaddOneSeconds = yyyyMMddHHmmssSSS.plusSeconds(1L);//添加1秒
        LocalDateTime localDateTimeaddOneNanos = yyyyMMddHHmmssSSS.plusNanos(1L);//添加1納秒
        System.out.println("LocalDateTime yyyyMMddHHmmssSSS 當(dāng)前時(shí)間: " + yyyyMMddHHmmssSSS);
        System.out.println("*********LocalDateTime yyyyMMddHHmmssSSS 添加 操作*********");
        System.out.println("LocalDateTime yyyyMMddHHmmssSSS 添加一日: " + localDateTimeaddOneDay);
        System.out.println("LocalDateTime yyyyMMddHHmmssSSS 添加一月: " + localDateTimeaddOneMonths);
        System.out.println("LocalDateTime yyyyMMddHHmmssSSS 添加一年: " + localDateTimeaddOneYears);
        System.out.println("LocalDateTime yyyyMMddHHmmssSSS 添加一周: " + localDateTimeaddOneWeeks);
        System.out.println("LocalDateTime yyyyMMddHHmmssSSS 添加1小時(shí): " + localDateTimeaddOneHours);
        System.out.println("LocalDateTime yyyyMMddHHmmssSSS 添加1分鐘: " + localDateTimeaddOneMinutes);
        System.out.println("LocalDateTime yyyyMMddHHmmssSSS 添加1秒: " + localDateTimeaddOneSeconds);
        System.out.println("LocalDateTime yyyyMMddHHmmssSSS 添加1納秒: " + localDateTimeaddOneNanos);
        LocalDateTime localDateTimedelOneDay = yyyyMMddHHmmssSSS.minusDays(1L); //減去一日
        LocalDateTime localDateTimedelOneMonths = yyyyMMddHHmmssSSS.minusMonths(1L);//減去一月
        LocalDateTime localDateTimedelOneYears = yyyyMMddHHmmssSSS.minusYears(1L);//減去一年
        LocalDateTime localDateTimedelOneWeeks = yyyyMMddHHmmssSSS.minusWeeks(1L);//減去一周
        LocalDateTime localDateTimedelOneHours = yyyyMMddHHmmssSSS.minusHours(1L); //減去1小時(shí)
        LocalDateTime localDateTimedelOneMinutes = yyyyMMddHHmmssSSS.minusMinutes(1L);//減去1分鐘
        LocalDateTime localDateTimedelOneSeconds = yyyyMMddHHmmssSSS.minusSeconds(1L);//減去1秒
        LocalDateTime localDateTimedelOneNanos = yyyyMMddHHmmssSSS.minusNanos(1L);//減去1納秒
        System.out.println("*********LocalDateTime yyyyMMddHHmmssSSS 減 操作*********");
        System.out.println("LocalDateTime yyyyMMddHHmmssSSS 減去一日: " + localDateTimedelOneDay);
        System.out.println("LocalDateTime yyyyMMddHHmmssSSS 減去一月: " + localDateTimedelOneMonths);
        System.out.println("LocalDateTime yyyyMMddHHmmssSSS 減去一年: " + localDateTimedelOneYears);
        System.out.println("LocalDateTime yyyyMMddHHmmssSSS 減去一周: " + localDateTimedelOneWeeks);
        System.out.println("LocalDateTime yyyyMMddHHmmssSSS 減去1小時(shí): " + localDateTimedelOneHours);
        System.out.println("LocalDateTime yyyyMMddHHmmssSSS 減去1分鐘: " + localDateTimedelOneMinutes);
        System.out.println("LocalDateTime yyyyMMddHHmmssSSS 減去1秒: " + localDateTimedelOneSeconds);
        System.out.println("LocalDateTime yyyyMMddHHmmssSSS 減去1納秒: " + localDateTimedelOneNanos);

        /*
        輸出:
            LocalDate yyyyMMdd 當(dāng)前時(shí)間: 2020-10-16

            *********LocalDate yyyyMMdd 添加 操作*********
            LocalDate yyyyMMdd 添加一日: 2020-10-17
            LocalDate yyyyMMdd 添加一月: 2020-11-16
            LocalDate yyyyMMdd 添加一年: 2021-10-16
            LocalDate yyyyMMdd 添加一周: 2020-10-23

            *********LocalDate yyyyMMdd 減 操作*********
            LocalDate yyyyMMdd 減去一日: 2020-10-15
            LocalDate yyyyMMdd 減去一月: 2020-09-16
            LocalDate yyyyMMdd 減去一年: 2019-10-16
            LocalDate yyyyMMdd 減去一周: 2020-10-09

            ####################################################################
            LocalTime HHmmssSSS 當(dāng)前時(shí)間: 10:20:22.164

            *********LocalTime HHmmssSSS 添加 操作*********
            LocalTime HHmmssSSS 添加1小時(shí): 11:20:22.164
            LocalTime HHmmssSSS 添加1分鐘: 10:21:22.164
            LocalTime HHmmssSSS 添加1秒: 10:20:23.164
            LocalTime HHmmssSSS 添加1納秒: 10:20:22.164000001

            *********LocalTime HHmmssSSS 減 操作*********
            LocalTime HHmmssSSS 減去1小時(shí): 09:20:22.164
            LocalTime HHmmssSSS 減去1分鐘: 10:19:22.164
            LocalTime HHmmssSSS 減去1秒: 10:20:21.164
            LocalTime HHmmssSSS 減去1納秒: 10:20:22.163999999

            ####################################################################
            LocalDateTime yyyyMMddHHmmssSSS 當(dāng)前時(shí)間: 2020-10-16T10:20:22.165

            *********LocalDateTime yyyyMMddHHmmssSSS 添加 操作*********
            LocalDateTime yyyyMMddHHmmssSSS 添加一日: 2020-10-17T10:20:22.165
            LocalDateTime yyyyMMddHHmmssSSS 添加一月: 2020-11-16T10:20:22.165
            LocalDateTime yyyyMMddHHmmssSSS 添加一年: 2021-10-16T10:20:22.165
            LocalDateTime yyyyMMddHHmmssSSS 添加一周: 2020-10-23T10:20:22.165
            LocalDateTime yyyyMMddHHmmssSSS 添加1小時(shí): 2020-10-16T11:20:22.165
            LocalDateTime yyyyMMddHHmmssSSS 添加1分鐘: 2020-10-16T10:21:22.165
            LocalDateTime yyyyMMddHHmmssSSS 添加1秒: 2020-10-16T10:20:23.165
            LocalDateTime yyyyMMddHHmmssSSS 添加1納秒: 2020-10-16T10:20:22.165000001

            *********LocalDateTime yyyyMMddHHmmssSSS 減 操作*********
            LocalDateTime yyyyMMddHHmmssSSS 減去一日: 2020-10-15T10:20:22.165
            LocalDateTime yyyyMMddHHmmssSSS 減去一月: 2020-09-16T10:20:22.165
            LocalDateTime yyyyMMddHHmmssSSS 減去一年: 2019-10-16T10:20:22.165
            LocalDateTime yyyyMMddHHmmssSSS 減去一周: 2020-10-09T10:20:22.165
            LocalDateTime yyyyMMddHHmmssSSS 減去1小時(shí): 2020-10-16T09:20:22.165
            LocalDateTime yyyyMMddHHmmssSSS 減去1分鐘: 2020-10-16T10:19:22.165
            LocalDateTime yyyyMMddHHmmssSSS 減去1秒: 2020-10-16T10:20:21.165
            LocalDateTime yyyyMMddHHmmssSSS 減去1納秒: 2020-10-16T10:20:22.164999999
         */
    }

將年、月、日等修改為指定的值,并返回新的日期(時(shí)間)對(duì)象

/**
     * 將年、月、日等修改為指定的值,并返回新的日期(時(shí)間)對(duì)象
     * 析: 其效果與時(shí)間日期相加減差不多,如今天是2018-01-13,要想變?yōu)?018-01-20有兩種方式
     * a. localDate.plusDays(20L) -> 相加指定的天數(shù)
     * b. localDate.withDayOfYear(20) -> 直接指定到哪一天
     */
    @Test
    public void directDesignationTime() {
        LocalDate yyyyMMdd = LocalDate.now();
        System.out.println("LocalDate yyyyMMdd 當(dāng)前時(shí)間: " + yyyyMMdd);

        LocalDate addDay = yyyyMMdd.plusDays(4);
        System.out.println("LocalDate yyyyMMdd 添加4天后的日期: " + addDay);

        LocalDate directDesignationDate = yyyyMMdd.withDayOfMonth(20);
        System.out.println("LocalDate yyyyMMdd 直接指定到當(dāng)月第幾號(hào): " + directDesignationDate);

        LocalDate directDesignationYearDate = yyyyMMdd.withDayOfYear(20);
        System.out.println("LocalDate yyyyMMdd 直接指定到當(dāng)年第幾天: " + directDesignationYearDate);

        LocalDate directDesignationYear = yyyyMMdd.withYear(2000);
        System.out.println("LocalDate yyyyMMdd 當(dāng)前時(shí)間直接指定年份: " + directDesignationYear);

        LocalDate directDesignationMonth = yyyyMMdd.withMonth(6);
        System.out.println("LocalDate yyyyMMdd 當(dāng)前時(shí)間直接指定月份: " + directDesignationMonth);
    }

獲取日期的年月日周時(shí)分秒

	 /**
     * 獲取日期的年月日周時(shí)分秒
     */
    @Test
    public void getDateInfo() {
        LocalDateTime yyyyMMddHHmmssSSS = LocalDateTime.now();
        //本年當(dāng)中第多少天
        int dayOfYear = yyyyMMddHHmmssSSS.getDayOfYear();
        //本月當(dāng)中第多少天
        int dayOfMonth = yyyyMMddHHmmssSSS.getDayOfMonth();
        DayOfWeek dayOfWeek = yyyyMMddHHmmssSSS.getDayOfWeek();
        //本周中星期幾
        int value = dayOfWeek.getValue();
        System.out.println("今天是" + yyyyMMddHHmmssSSS + "\n"
                + "本年當(dāng)中第" + dayOfYear + "天" + "\n"
                + "本月當(dāng)中第" + dayOfMonth + "天" + "\n"
                + "本周中星期" + value + "-即" + dayOfWeek + "\n");

        //年
        int year = yyyyMMddHHmmssSSS.getYear();
        //月
        Month month = yyyyMMddHHmmssSSS.getMonth();
        //直接獲取
        int monthValue = yyyyMMddHHmmssSSS.getMonthValue();
        //日
        int dayOfMonth1 = yyyyMMddHHmmssSSS.getDayOfMonth();
        //時(shí)
        int hour = yyyyMMddHHmmssSSS.getHour();
        //分
        int minute = yyyyMMddHHmmssSSS.getMinute();
        //秒
        int second = yyyyMMddHHmmssSSS.getSecond();
        //納秒
        int nano = yyyyMMddHHmmssSSS.getNano();

        System.out.println("今天是" + yyyyMMddHHmmssSSS + "\n"
                + "年 : " + year + "\n"
                + "月 : " + monthValue + "-即 " + month + "\n"
                + "日 : " + dayOfMonth1 + "\n"
                + "時(shí) : " + hour + "\n"
                + "分 : " + minute + "\n"
                + "秒 : " + second + "\n"
                + "納秒 : " + nano + "\n"
        );
    }

時(shí)間日期前后的比較與判斷

	/**
     * 時(shí)間日期前后的比較與判斷
     */
    @Test
    public void isBefore() {
        LocalDate now = LocalDate.now();
        LocalDate of = LocalDate.of(2020, 10, 15);
        //判斷of 是否在 now 時(shí)間之前
        boolean before = of.isBefore(now);
        System.out.println("判斷of 是否在 now 時(shí)間之前 " + before);
        //判斷of 是否在 now 時(shí)間之后
        boolean after = of.isAfter(now);
        System.out.println("判斷of 是否在 now 時(shí)間之后 " + after);
        //判斷兩個(gè)時(shí)間是否相等
        boolean equal = of.isEqual(now);
        System.out.println("判斷兩個(gè)時(shí)間是否相等 " + equal);
        //判斷是否為閏年
        boolean leapYear = now.isLeapYear();
        System.out.println("判斷是否為閏年 " + leapYear);

        /*
            判斷of 是否在 now 時(shí)間之前true
            判斷of 是否在 now 時(shí)間之后false
            判斷兩個(gè)時(shí)間是否相等f(wàn)alse
            判斷是否為閏年true
         */
    }

java8時(shí)鐘 : clock()

	/**
     * java8時(shí)鐘 : clock()
     */
    @Test
    public void clock() {
        //返回當(dāng)前時(shí)間,根據(jù)系統(tǒng)時(shí)間和UTC
        Clock clock = Clock.systemUTC();
        System.out.println(clock);
        // 運(yùn)行結(jié)果: SystemClock[Z]
    }

時(shí)間戳

	/**
     * 時(shí)間戳
     * 事實(shí)上Instant就是java8以前的Date,
     * 可以使用以下兩個(gè)類(lèi)中的方法在這兩個(gè)類(lèi)型之間進(jìn)行轉(zhuǎn)換,
     * 比如Date.from(Instant)就是用來(lái)把Instant轉(zhuǎn)換成java.util.date的,
     * 而new Date().toInstant()就是將Date轉(zhuǎn)換成Instant的
     */
    @Test
    public void instant() {
        Instant instant = Instant.now();
        System.out.println(instant);

        Date date = Date.from(instant);

        Instant instant2 = date.toInstant();
        System.out.println(date);
        System.out.println(instant2);
    }


System.currentTimeMillis()    效率高
new Date().getTime()  最常見(jiàn),底層也是System.currentTimeMillis()
Calendar.getInstance().getTimeInMillis() 這種方式其實(shí)是速度最慢

計(jì)算時(shí)間、日期間隔

	/**
     * 計(jì)算時(shí)間、日期間隔
     * Duration:用于計(jì)算兩個(gè)“時(shí)間”間隔
     * Period:用于計(jì)算兩個(gè)“日期”間隔
     */
    @Test
    public void durationOrPeriod() {
        LocalDateTime now = LocalDateTime.now();
        System.out.println("duration當(dāng)前時(shí)間:" + now);
        LocalDateTime of = LocalDateTime.of(2020, 10, 15, 10, 24);
        System.out.println("duration自定義時(shí)間:" + of);
        //Duration:用于計(jì)算兩個(gè)“時(shí)間”間隔
        Duration duration = Duration.between(now, of);
        System.out.println(now + " 與 " + of + " 間隔  " + "\n"
                + " 天 :" + duration.toDays() + "\n"
                + " 時(shí) :" + duration.toHours() + "\n"
                + " 分 :" + duration.toMinutes() + "\n"
                + " 毫秒 :" + duration.toMillis() + "\n"
                + " 納秒 :" + duration.toNanos() + "\n"
        );

        LocalDate nowDate = LocalDate.now();
        System.out.println("period當(dāng)前時(shí)間:" + now);
        LocalDate OfDate = LocalDate.of(2020, 10, 15);
        System.out.println("period自定義時(shí)間:" + of);
        //Period:用于計(jì)算兩個(gè)“日期”間隔
        Period period = Period.between(nowDate, OfDate);
        System.out.println("Period相差年數(shù) : " + period.getYears());
        System.out.println("Period相差月數(shù) : " + period.getMonths());
        System.out.println("Period相差日數(shù) : " + period.getDays());
        //還可以這樣獲取相差的年月日
        System.out.println("-------------------------------");
        long years = period.get(ChronoUnit.YEARS);
        long months = period.get(ChronoUnit.MONTHS);
        long days = period.get(ChronoUnit.DAYS);
        System.out.println("Period相差的年月日分別為 : " + years + "," + months + "," + days);
        //注意,當(dāng)獲取兩個(gè)日期的間隔時(shí),并不是單純的年月日對(duì)應(yīng)的數(shù)字相加減,而是會(huì)先算出具體差多少天,在折算成相差幾年幾月幾日的

        /*
        輸出:
            duration當(dāng)前時(shí)間:2020-10-16T14:41:40.235
            duration自定義時(shí)間:2020-10-15T10:24
            2020-10-16T14:41:40.235 與 2020-10-15T10:24 間隔
             天 :-1
             時(shí) :-28
             分 :-1697
             毫秒 :-101860235
             納秒 :-101860235000000

            period當(dāng)前時(shí)間:2020-10-16T14:41:40.235
            period自定義時(shí)間:2020-10-15T10:24
            Period相差年數(shù) : 0
            Period相差月數(shù) : 0
            Period相差日數(shù) : -1
            -------------------------------
            Period相差的年月日分別為 : 0,0,-1
         */
    }

日期格式化

將時(shí)間對(duì)象轉(zhuǎn)化為日期字符串

	 /**
     * 將時(shí)間對(duì)象轉(zhuǎn)化為日期字符串
     * 時(shí)間日期的格式化(格式化后返回的類(lèi)型是String) 自定格式 使用 DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss:SSS");
     * 注:自定義轉(zhuǎn)化的格式一定要與日期類(lèi)型對(duì)應(yīng)
     * LocalDate只能設(shè)置僅含年月日的格式
     * LocalTime只能設(shè)置僅含時(shí)分秒的格式
     * LocalDateTime可以設(shè)置含年月日時(shí)分秒的格式
     */
    @Test
    public void formatter1() {
        LocalDateTime now = LocalDateTime.now();
        DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss:SSS");
        String format = dtf.format(now);
        System.out.println(format);
        //輸出: 2020-10-16 14:41:01:086
    }

將時(shí)間字符串形式轉(zhuǎn)化為日期對(duì)象

	/**
     * 將時(shí)間字符串形式轉(zhuǎn)化為日期對(duì)象
     * <p>
     * 注:格式的寫(xiě)法必須與字符串的形式一樣
     * 2018-01-13 21:27:30 對(duì)應(yīng) yyyy-MM-dd HH:mm:ss
     * 20180113213328 對(duì)應(yīng) yyyyMMddHHmmss
     * 否則會(huì)報(bào)運(yùn)行時(shí)異常!
     * <p>
     * 但要記?。旱玫降淖罱K結(jié)果都是類(lèi)似2018-01-13T21:27:30的格式
     * 因?yàn)樵谳敵鯨ocalDateTime對(duì)象時(shí),會(huì)調(diào)用其重寫(xiě)的toString方法。
     */
    @Test
    public void formatter2() {
        String dateStr = "2020-11-12";
        DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd");
        LocalDate formatterDate = LocalDate.parse(dateStr, dtf);
        System.out.println(formatterDate);
        //輸出 2020-11-12
    }

將時(shí)間日期對(duì)象轉(zhuǎn)為格式化后的時(shí)間日期對(duì)象

	/**
     * 將時(shí)間日期對(duì)象轉(zhuǎn)為格式化后的時(shí)間日期對(duì)象
     */
    @Test
    public void formatter3() {
        //新的格式化API中,格式化后的結(jié)果都默認(rèn)是String,有時(shí)我們也需要返回經(jīng)過(guò)格式化的同類(lèi)型對(duì)象
        LocalDateTime ldt1 = LocalDateTime.now();
        DateTimeFormatter dtf1 = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
        String temp = dtf1.format(ldt1);
        LocalDateTime formatedDateTime = LocalDateTime.parse(temp, dtf1);
        System.out.println(formatedDateTime);
    }

轉(zhuǎn)換

localDate 轉(zhuǎn) date

	/**
     * localDate 轉(zhuǎn) date
     * localDateTime 轉(zhuǎn) date
     */
    @Test
    public void localDateToDate() {
        LocalDate now = LocalDate.now();
        Date from = Date.from(now.atStartOfDay(ZoneOffset.systemDefault()).toInstant());
        LocalDateTime localDateTime = LocalDateTime.now();
        Date date = Date.from(localDateTime.atZone(ZoneOffset.ofHours(8)).toInstant());
        System.out.println(from);
        System.out.println(date);
    }

date 轉(zhuǎn) localDate

	/**
     * date 轉(zhuǎn) localDate
     * date 轉(zhuǎn) localDateTime
     */
    @Test
    public void dateToLocalDate() {
        Date date = new Date();
        LocalDate localDate = date.toInstant().atZone(ZoneOffset.systemDefault()).toLocalDate();
        System.out.println(localDate);
        LocalDateTime localDateTime = date.toInstant().atZone(ZoneOffset.systemDefault()).toLocalDateTime();
        System.out.println(localDateTime);
    }

localDate 轉(zhuǎn) 時(shí)間戳

	/**
     * LocalDate 轉(zhuǎn) 時(shí)間戳
     * LocalDateTime 轉(zhuǎn) 時(shí)間戳
     */
    @Test
    public void localDateToInstant() {
        LocalDate localDate = LocalDate.now();
        long instant = localDate.atStartOfDay(ZoneOffset.systemDefault()).toInstant().toEpochMilli();
        System.out.println(instant);
        LocalDateTime now = LocalDateTime.now();
        long instant1 = now.toInstant(ZoneOffset.ofHours(8)).toEpochMilli();
        System.out.println(instant1);
    }

時(shí)間戳 轉(zhuǎn) localDate

	/**
     * 時(shí)間戳 轉(zhuǎn) LocalDate
     * 時(shí)間戳 轉(zhuǎn) LocalDateTime
     */
    @Test
    public void instantToLocalDate() {
        long time = new Date().getTime();
        LocalDateTime localDateTime = Instant.ofEpochMilli(time).atZone(ZoneOffset.systemDefault()).toLocalDateTime();
        System.out.println(localDateTime);
        LocalDate localDate = Instant.ofEpochMilli(time).atZone(ZoneOffset.systemDefault()).toLocalDate();
        System.out.println(localDate);

    }

總結(jié) 

到此這篇關(guān)于Java1.8中LocalDate方法使用的文章就介紹到這了,更多相關(guān)LocalDate方法使用內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • SpringBoot中實(shí)現(xiàn)代理方式

    SpringBoot中實(shí)現(xiàn)代理方式

    這篇文章主要介紹了SpringBoot中實(shí)現(xiàn)代理方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-06-06
  • 基于mybatis中數(shù)組傳遞注意事項(xiàng)

    基于mybatis中數(shù)組傳遞注意事項(xiàng)

    這篇文章主要介紹了mybatis中數(shù)組傳遞注意事項(xiàng),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-09-09
  • java如何發(fā)送get請(qǐng)求獲取數(shù)據(jù)(附代碼)

    java如何發(fā)送get請(qǐng)求獲取數(shù)據(jù)(附代碼)

    這篇文章主要給大家介紹了關(guān)于java如何發(fā)送get請(qǐng)求獲取數(shù)據(jù)的相關(guān)資料,Java中的GET請(qǐng)求方法是HTTP協(xié)議中的一種請(qǐng)求方式,用于向服務(wù)器請(qǐng)求獲取資源,需要的朋友可以參考下
    2023-10-10
  • 通過(guò)Java實(shí)現(xiàn)zip文件與rar文件解壓縮的詳細(xì)步驟

    通過(guò)Java實(shí)現(xiàn)zip文件與rar文件解壓縮的詳細(xì)步驟

    這篇文章主要給大家介紹了如何通過(guò)?Java?來(lái)完成?zip?文件與?rar?文件的解壓縮,文中通過(guò)代碼示例講解的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下
    2024-07-07
  • Java中常見(jiàn)的4種限流算法詳解

    Java中常見(jiàn)的4種限流算法詳解

    這篇文章主要介紹了Java中常見(jiàn)的4種限流算法詳解,FixedWindowRateLimiter 類(lèi)表示一個(gè)固定窗口限流器,使用 limit 和 interval 參數(shù)分別表示限制請(qǐng)求數(shù)量和時(shí)間間隔,缺點(diǎn)是短時(shí)間內(nèi)可能會(huì)流量翻倍,需要的朋友可以參考下
    2023-12-12
  • springboot filter實(shí)現(xiàn)請(qǐng)求響應(yīng)全鏈路攔截

    springboot filter實(shí)現(xiàn)請(qǐng)求響應(yīng)全鏈路攔截

    這篇文章主要為大家詳細(xì)介紹了SpringBoot如何結(jié)合Filter同時(shí)攔截請(qǐng)求和響應(yīng),從而實(shí)現(xiàn)??日志采集自動(dòng)化,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2025-04-04
  • Java爬蟲(chóng)實(shí)現(xiàn)Jsoup利用dom方法遍歷Document對(duì)象

    Java爬蟲(chóng)實(shí)現(xiàn)Jsoup利用dom方法遍歷Document對(duì)象

    本文主要介紹了Java爬蟲(chóng)實(shí)現(xiàn)Jsoup利用dom方法遍歷Document對(duì)象,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-05-05
  • Java實(shí)現(xiàn)輸出數(shù)字三角形實(shí)例代碼

    Java實(shí)現(xiàn)輸出數(shù)字三角形實(shí)例代碼

    大家好,本篇文章主要講的是Java實(shí)現(xiàn)輸出三角形實(shí)例代碼,感興趣的同學(xué)趕快來(lái)看一看吧,對(duì)你有幫助的話(huà)記得收藏一下,方便下次瀏覽
    2022-01-01
  • 一文給你通俗易懂的講解Java異常

    一文給你通俗易懂的講解Java異常

    這篇文章主要給大家介紹了關(guān)于Java異常的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-05-05
  • 超級(jí)詳細(xì)Java?JDK環(huán)境配置教程(Mac?版)

    超級(jí)詳細(xì)Java?JDK環(huán)境配置教程(Mac?版)

    這篇文章詳細(xì)講解了在MacOS上安裝JDK及配置Java環(huán)境的步驟,包括下載JDK安裝包、安裝JDK、查詢(xún)安裝路徑以及配置環(huán)境變量,旨在為初學(xué)者提供一份保姆級(jí)的安裝指南,文中通過(guò)圖文介紹的非常詳細(xì),需要的朋友可以參考下
    2024-10-10

最新評(píng)論