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());
}
}