Web項目中愉快的使用Java8日期API

? ? ? ? 在Java8發(fā)布之前繁瑣的日期API使我們不得不借助第三方的Jar包Joda來對日期進行操作,而Java8的日期java.time包則是由Joda的作者來進行操刀,我相信不管是因為Java8性能的提升、函數(shù)式編程、流、新的日期API的引入、還是開發(fā)者對新興技術(shù)的熱情擁抱,我們的新項目基本都是基于Java8開發(fā)了,而且因為Java良好的向后兼容性,我們老的項目升級為Java8也并非難事。
? ? ? ? 為了兼容歷史版本,新的日期API沒有選擇直接在舊的Date上直接動刀,而是選擇增加了LocalDate、LocalTime、LocalDateTime等新的類,并且提供了Date和LocalDateTime的互轉(zhuǎn)

LocalDateTime轉(zhuǎn)為Date

  //獲取當前時間
  LocalDateTime now = LocalDateTime.now();

  //獲取當前系統(tǒng)所在的時區(qū)
  ZoneId zoneId = ZoneId.systemDefault();

  //獲取該時間點在該時區(qū)上的時間日期信息
  ZonedDateTime zonedDateTime = now.atZone(zoneId);

  Date nowDate = Date.from(zonedDateTime.toInstant());

Date轉(zhuǎn)為LocalDateTime

 Date date = new Date();

 Instant instant = date.toInstant();

 ZoneId zoneId = ZoneId.systemDefault();

關(guān)于時間加減LocalDateTime提供了plus和minus的各種方法,需要的時候根據(jù)提示找對應(yīng)的API即可。

時間格式化

LocalDateTime now = LocalDateTime.now();

DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:ss:mm");

String format = df.format(now);

字符串解析

 DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:ss:mm");

 LocalDateTime date = LocalDateTime.from(df.parse("2017-10-11 22:22:22"));

SpringMVC

Spring4版本之后默認對JSR310提供支持,只需要在日期字段上加注解

@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")

Mybatis

mybatis中數(shù)據(jù)庫字段對應(yīng)的實體類時間也是默認使用Date類型不做改變,而是提供了針對jsr310的一個插件

<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-typehandlers-jsr310</artifactId>
<version>xxx</version>
</dependency>

引入包之后不需要做任何改變,實體類為LocalDateTime等的字段就可以識別

SpringDataJPA

Spring的做法跟Mybatis的類似,使用一個Jsr310JpaConverters類來做轉(zhuǎn)換,SpringBoot中只要在啟動類上加注解即可:

@EntityScan(basePackageClasses = {Application.class,Jsr310JpaConverters.class})
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 1. 簡介 1.1 什么是 MyBatis ? MyBatis 是支持定制化 SQL、存儲過程以及高級映射的優(yōu)秀的...
    笨鳥慢飛閱讀 6,248評論 0 4
  • 你有沒有非常愛過一個人,有沒有非常恨過一個人。經(jīng)年以后,你會明白那些愛和恨只是過眼煙云罷了,故事的結(jié)局往往是 各...
    落落南笙閱讀 642評論 2 7

友情鏈接更多精彩內(nèi)容