Java中LocalDate,LocalDateTime,Date,日期串相互轉(zhuǎn)換
1. 獲取當前時間 XXX.now()
public void testCurrentDate() {
LocalDate curLocalDate = LocalDate.now();
System.out.println("地心俠士: "+curLocalDate.toString());
LocalTime curLoacalTime = LocalTime.now();
System.out.println("地心俠士: "+curLoacalTime.toString());
LocalDateTime curLocalDateTime = LocalDateTime.now();
System.out.println("地心俠士: "+curLocalDateTime.toString());
Instant curInstant = Instant.now();
System.out.println("地心俠士: "+ curInstant.toString());
}
輸出結(jié)果
地心俠士: 2026-02-04
地心俠士: 17:15:59.715639800
地心俠士: 2026-02-04T17:15:59.715639800
地心俠士: 2026-02-04T09:15:59.715639800Z
說明:
- LocalDate,LocalTime,LocalDateTime都是當前時區(qū)對應日期或時間
- Instant獲取到的是UTC+0 日期和時間
- Z 代表零時區(qū)(UTC+0) T 日期和時間的分割符
2. 時間戳轉(zhuǎn)成LocalDateTime
public void testTimestamp() {
Long timeStamp = 1769577638767L;
Instant instant = Instant.ofEpochMilli(timeStamp);
System.out.println("地心俠士: " + instant.toString());
LocalDateTime cvLocalDate = LocalDateTime.ofInstant(instant, ZoneId.systemDefault());
System.out.println("地心俠士: " + cvLocalDate.toString());
LocalDateTime localDateT1 = LocalDateTime.ofEpochSecond(timeStamp / 1000, 0, ZoneOffset.ofHours(8));
System.out.println("地心俠士: " + localDateT1.toString());
}
輸出結(jié)果
地心俠士: 2026-01-28T05:20:38.767Z
地心俠士: 2026-01-28T13:20:38.767
地心俠士: 2026-01-28T13:20:38
說明:
- 使用方法 LocalDateTime.ofInstant 或者 LocalDateTime.ofEpochSecond
- 使用 ofInstant ,毫秒時間戳可以直接使用
- 使用 ofEpochSecond ,毫秒時間戳需要除以1000
- ofInstant 使用 ZoneId.systemDefault() 獲取當時區(qū)
- OfEpochSecond 使用 ZoneOffset.ofHours(8) 指定需要的時區(qū)
- ZoneId.systemDefault() 當前時區(qū),等同的有
ZoneId.of("Asia/Shanghai")ZoneId.of("GMT+8")ZoneId.of("UTC+08:00")ZoneId.of("+08:00")
3. 時間串轉(zhuǎn)換成LocalDateTime
public void testDateStr() {
DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SSS");
String dateStr = "2026-01-28 18:20:38.767";
LocalDateTime localDateTime = LocalDateTime.parse(dateStr, df);
System.out.println("地心俠士: " + localDateTime.toString());
LocalDateTime defaultParse = LocalDateTime.parse("2026-01-28T18:20:38");
System.out.println("地心俠士: " + defaultParse.toString());
DateTimeFormatterBuilder dfBuild = new DateTimeFormatterBuilder();
DateTimeFormatter dynmicDf = dfBuild.appendPattern("yyyy-MM-dd")
.optionalStart()
.appendLiteral(' ')
.optionalEnd()
.optionalStart()
.appendLiteral('T')
.optionalEnd()
.appendPattern("HH:mm:ss")
.toFormatter();
LocalDateTime dynamic1 = LocalDateTime.parse("2026-01-28T18:20:38", dynmicDf);
System.out.println("地心俠士: " + dynamic1.toString());
LocalDateTime dynamc2 = LocalDateTime.parse("2026-01-28 18:20:38", dynmicDf);
System.out.println("地心俠士: " + dynamc2.toString());
}
輸出結(jié)果:
地心俠士: 2026-01-28T18:20:38.767
地心俠士: 2026-01-28T18:20:38
地心俠士: 2026-01-28T18:20:38
地心俠士: 2026-01-28T18:20:38
說明:
- 使用方法LocalDateTime.parse結(jié)合DateTimeFormatter轉(zhuǎn)換
- 默認轉(zhuǎn)換格式為yyyy-MM-ddTHH:mm:ss
- 使用
DateTimeFormatterBuilder可以實現(xiàn)多種日期串轉(zhuǎn)換成LocalDateTime
4. LocalDateTime轉(zhuǎn)換成成LocalDate和Date
public void testDateConvert() {
LocalDateTime dt = LocalDateTime.now();
System.out.println("地心俠士 " + dt.toString());
System.out.println("LocalDateTime=>LocalDate");
LocalDate localDate = dt.toLocalDate();
System.out.println("地心俠士 " + localDate.toString());
System.out.println("LocalDateTime=>Date");
Instant instant = dt.toInstant(ZoneOffset.ofHours(8));
Date d = Date.from(instant);
System.out.println("地心俠士 " + d);
}
輸出結(jié)果:
地心俠士 2026-02-06T19:09:35.092605300
LocalDateTime=>LocalDate
地心俠士 2026-02-06
LocalDateTime=>Date
地心俠士 Fri Feb 06 19:09:35 CST 2026
5. Date 轉(zhuǎn)換成LocalDateTime
public void testDateConvert2() {
Date date = new Date();
System.out.println("地心俠士 " + date.toString());
System.out.println("Date=>LocalDateTime");
Instant instant = date.toInstant();
LocalDateTime lcd = LocalDateTime.ofInstant(instant, ZoneId.systemDefault());
System.out.println("地心俠士 " + lcd.toString());
}
輸出結(jié)果:
地心俠士 Fri Feb 06 19:15:38 CST 2026
Date=>LocalDateTime
地心俠士 2026-02-06T19:15:38.122
6. 北京時間時區(qū)表示
public void testZone() {
ZoneId zonidGMT8 = ZoneId.of("GMT+8");
LocalDateTime gmt8 = LocalDateTime.ofInstant(Instant.now(), zonidGMT8);
System.out.println("地心俠士: " + gmt8.toString());
ZoneId zonidAS = ZoneId.of("Asia/Shanghai");
LocalDateTime as = LocalDateTime.ofInstant(Instant.now(), zonidAS);
System.out.println("地心俠士: " + as.toString());
ZoneId zonidUTC8 = ZoneId.of("UTC+08:00");
LocalDateTime utc = LocalDateTime.ofInstant(Instant.now(), zonidUTC8);
System.out.println("地心俠士: " + utc.toString());
ZoneId zonid8 = ZoneId.of("+08:00");
LocalDateTime ad8= LocalDateTime.ofInstant(Instant.now(), zonid8);
System.out.println("地心俠士: " + ad8.toString());
}
輸出結(jié)果:
地心俠士: 2026-02-06T18:35:26.921795200
地心俠士: 2026-02-06T18:35:26.928776600
地心俠士: 2026-02-06T18:35:26.928776600
地心俠士: 2026-02-06T18:35:26.928776600
到此這篇關(guān)于Java中LocalDate,LocalDateTime,Date,日期串相互轉(zhuǎn)換的文章就介紹到這了,更多相關(guān)Java LocalDate,LocalDateTime,Date轉(zhuǎn)換內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- 從Date到LocalDateTime解析Java JDBC時間類型映射
- Java 8日期處理LocalDateTime時區(qū)轉(zhuǎn)換的3大誤區(qū)與解決方案
- Java8日期時間類LocalDateTime比較大小舉例
- Java解決LocalDateTime傳輸前端為時間的數(shù)組
- Java8?LocalDateTime時間日期類使用實例詳解
- Java?LocalDateTime獲取時間信息、格式化、轉(zhuǎn)換為數(shù)字時間戳代碼示例
- Java8日期類LocalDate、LocalTime和LocalDateTime使用方法詳解
- JAVA中時間戳與LocalDateTime互相轉(zhuǎn)換代碼例子
- Java在ElasticSearch中使用LocalDatetime類型
- java用LocalDateTime類獲取當天時間、前一天時間及本周/本月的開始和結(jié)束時間
- Java關(guān)于后端怎么去接收Date、LocalDateTime類型的參數(shù)詳解
相關(guān)文章
淺談Java中ThreadLocal引發(fā)的內(nèi)存泄漏
本文主要介紹了淺談Java中ThreadLocal引發(fā)的內(nèi)存泄漏,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2023-06-06
基于SpringBoot整合oauth2實現(xiàn)token認證
這篇文章主要介紹了基于SpringBoot整合oauth2實現(xiàn)token 認證,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2020-01-01
java 中模擬UDP傳輸?shù)陌l(fā)送端和接收端實例詳解
這篇文章主要介紹了java 中模擬UDP傳輸?shù)陌l(fā)送端和接收端實例詳解的相關(guān)資料,需要的朋友可以參考下2017-03-03

