日期轉換、日期格式化、時間戳、時間校正器
阿新 • • 發佈:2021-06-25
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));
}
}