記:JDK8日期時間api

package com.mybatis.springbootmybatis.jdk8.localdate;

import java.time.*;
import java.time.format.DateTimeFormatter;
import java.time.temporal.TemporalAdjusters;

public class Test {
    public static void main(String[] args) {
        // LocalDate 獲取日期、LocalTime獲取時間、LocalDateTime獲取日期+時間
        //訂製日期格式
        DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
        //如果需要使用官方制定的時期格式直接DateTimeFormatter點就可以拿到
        //DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ISO_DATE_TIME;

        LocalDateTime localDateTime = LocalDateTime.now();
        String format = localDateTime.format(dateTimeFormatter);
        System.out.println(format);

        System.out.println("========================");

        // 獲取一天的最大最小時間
        LocalDateTime of = localDateTime.of(LocalDate.now(), LocalTime.MIN);
        of = localDateTime.of(LocalDate.now(), LocalTime.MAX);
        System.out.println(of.format(dateTimeFormatter));

        System.out.println("========================");

        LocalDateTime localDateTime1 = localDateTime.withHour(0).withMinute(0).withSecond(0);
        localDateTime1 = localDateTime.withHour(23).withMinute(59).withSecond(59);
        System.out.println(localDateTime1.format(dateTimeFormatter));

        System.out.println("========================");

        // 當前時間減去2h
        System.out.println(localDateTime1.minusHours(2).format(dateTimeFormatter));

        System.out.println("========================");


        // TemporalAdjuster : 時間校正器。有時我們可能需要獲,取例如:將日期調整到“下個週日”等操作。
        // TemporalAdjusters : 該類通過靜態方法提供了大量的常用 TemporalAdjuster 的實現。
        // 獲取週日時間
        System.out.println(LocalDateTime.now().with(TemporalAdjusters.next(DayOfWeek.SUNDAY)).format(dateTimeFormatter));

        System.out.println("========================");

        // 判斷當前時間是哪一天後,進行加減操作
        // DayOfWeek獲取週中天
        LocalDateTime localDateTime2 = LocalDateTime.now();
        System.out.println(
                localDateTime2.with((x) -> {
                    LocalDateTime time = (LocalDateTime) x;
                    if (time.getDayOfWeek().equals(DayOfWeek.SUNDAY)) {
                        return time.plusDays(1);
                    }
                    if (time.getDayOfWeek().equals(DayOfWeek.SATURDAY)) {
                        return time.plusDays(2);
                    }
                    return time;
                }).format(dateTimeFormatter)
        );

        System.out.println("========================");

        // Duration : 用於計算兩個“時間”間隔
        // Period : 用於計算兩個“日期”間隔
        // Instant : 時間戳。 (使用 Unix 元年  1970年1月1日 00:00:00 所經歷的毫秒值)
        // ZonedDate、ZonedTime、ZonedDateTime : 帶時區的時間或日期
        Instant now = Instant.now();
        LocalTime localTime1 = LocalTime.now();
        try {
            Thread.sleep(2000);
        } catch (Exception e) {
            e.printStackTrace();
        }
        Instant now2 = Instant.now();
        System.out.println(Duration.between(now,now2).getSeconds());
        LocalTime localTime2 = LocalTime.now();
        System.out.println(Duration.between(localTime1,localTime2).getSeconds());
    }
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章