LocalDate
年月日
LocalTime
時分秒
LocalDateTime
年月日時分秒
以 LocalDate 為例
package com.lch.time;
import java.time.*;
import java.time.format.DateTimeFormatter;
import java.time.temporal.TemporalAccessor;
import java.time.temporal.TemporalAdjusters;
import java.util.Date;
/**
* 時間轉換
*/
public class TimeConvert {
public static void main(String[] args) {
//擷取指定時間(年月日)
LocalDate appointTime = LocalDate.of(2022, 1, 1);
//擷取現在的時間(年月日)
LocalDate nowTime = LocalDate.now();
//擷取某日期是當周星期幾(枚舉類型)
DayOfWeek dayOfWeek = nowTime.getDayOfWeek();
//擷取某日期是當年的第幾天
int dayOfYear = nowTime.getDayOfYear();
//擷取某日期是當月的幾号
int dayOfMonth = nowTime.getDayOfMonth();
//擷取年
int year = nowTime.getYear();
//擷取月份對象(枚舉) 如 :四月APRIL
Month month = nowTime.getMonth();
//擷取月的值
int monthValue = nowTime.getMonthValue();
//加N天
LocalDate localDate = nowTime.plusDays(1);
//加N星期
LocalDate localDate1 = nowTime.plusWeeks(1);
//加N月
LocalDate localDate2 = nowTime.plusMonths(1);
//加N年
LocalDate localDate3 = nowTime.plusYears(1);
//減n天
LocalDate localDate4 = nowTime.minusDays(1);
//減n周
LocalDate localDate5 = nowTime.minusWeeks(1);
//減n月
LocalDate localDate6 = nowTime.minusMonths(1);
//減n年
LocalDate localDate7 = nowTime.minusYears(1);
//擷取兩個日期之間的間隔
Period period = Period.between(LocalDate.of(2021, 6, 24), LocalDate.of(2021, 5, 24));
//擷取兩個日期相差的天數
int days = period.getDays();
//擷取兩個日期相差的月
int months = period.getMonths();
//擷取兩個日期相差的年
int years = period.getYears();
日期格式化
/**
* DateTimeFormatter : 日期格式化類
*/
//指定格式
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd");
//将日期轉成字元串
String nowtimeStr = dtf.format(nowTime);
//将字元串轉成日期
TemporalAccessor newTime = dtf.parse("2020-10-10");
日期轉換
Date 與 LocalDateTime 轉換
/**
* Date 轉成 LocalDateTime
*/
LocalDateTime localDateTime = new Date()
.toInstant()
.atZone(ZoneId.systemDefault())
.toLocalDateTime();
/**
* LocalDateTime 轉成 Date
*/
Date date = Date.from(
LocalDateTime.now()
.atZone(ZoneId.systemDefault())
.toInstant()
);
Date 與 LocalDate 轉換
/**
* Date 轉成 LocalDate
*/
LocalDate localDate = new Date()
.toInstant()
.atZone(ZoneId.systemDefault())
.toLocalDate();
/**
* LocalDate 轉成 Date
*/
Date date2 = Date.from(
LocalDate.now()
.atStartOfDay(ZoneId.systemDefault())
.toInstant()
);
Date 與 LocalTime 轉換
/**
* Date 轉成 LocalTime
*/
LocalTime localTime = new Date()
.toInstant()
.atZone(ZoneId.systemDefault())
.toLocalTime();
/**
* LocalTime 轉成 Date
*/
Date date1 = Date.from(
LocalDateTime.of(LocalDate.now(), LocalTime.now())
.atZone(ZoneId.systemDefault())
.toInstant()
);
}
}
LocalDateTime 轉成 LocalDate
LocalDate localDate9 = LocalDateTime.now().toLocalDate();
LocalDateTime 轉成 LocalTime
LocalTime localTime1 = LocalDateTime.now().toLocalTime();
時間戳
/**
* Instant:時間戳(以Unix元年 1970年1月1日 00:00:00到某個時間毫秒值)
*/
//擷取目前時間,已0°經線計算
Instant now = Instant.now();
//轉成毫秒時間
long milli = now.toEpochMilli();
/**
* 擷取兩個時間的間隔
*/
Duration duration = Duration.between(now, now.plusSeconds(60));
// 兩個時間間隔的秒數
long seconds = duration.getSeconds();
//兩個時間間隔的毫秒數
long millis = duration.toMillis();
//兩個時間間隔的天數
long toDays = duration.toDays();
//兩個時間間隔的小時數
long toHours = duration.toHours();
時間校正器
/**
* TemporalAdjusters(接口):時間校正器
*/
//将時間調整為下周一
LocalDateTime dateTime = LocalDateTime.now();
LocalDateTime newDateTime = dateTime.with(TemporalAdjusters.next(DayOfWeek.MONDAY));
}
}