最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

@JsonFormat?和?@DateTimeFormat?時(shí)間格式化注解(場(chǎng)景示例代碼)

 更新時(shí)間:2023年05月25日 16:18:59   作者:zhuzicc  
這篇文章主要介紹了@JsonFormat和@DateTimeFormat時(shí)間格式化注解,本文通過場(chǎng)景示例代碼詳解給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

前后數(shù)據(jù)交互過程中,Date類型的數(shù)據(jù)經(jīng)常會(huì)出現(xiàn)類型映射轉(zhuǎn)換的錯(cuò)誤,為了達(dá)到業(yè)務(wù)的目標(biāo)時(shí)間格式,通常會(huì)使用@JsonFormat 和 @DateTimeFormat,但是這兩者有什么區(qū)別呢?

本文的衍生篇已發(fā)布,感興趣的伙伴們可以瞅瞅哈,針對(duì) @DateTimeFormat 做了補(bǔ)充說明,有場(chǎng)景示例比較詳情,需要的大佬可以看一下。傳送門 Spring @DateTimeFormat日期格式化時(shí)注解淺析分享

一、示例代碼

先準(zhǔn)備一個(gè)簡(jiǎn)單POJO,擁有Date類型的成員變量:

@Data
public class DateEntity {
    private Date date;
}

lombok依賴(版本任意):

 <dependency>
	  <groupId>org.projectlombok</groupId>
      <artifactId>lombok</artifactId>
      <version>1.18.12</version>
 </dependency>

再準(zhǔn)備一個(gè)Controller,模擬一下前后交互:

@RestController
@RequestMapping("/date")
public class DateController {
    @RequestMapping("/test")
    public DateEntity getDate(DateEntity dateEntity){
        System.out.println("入?yún)⒌膁ate:"+dateEntity.getDate());
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        String date = sdf.format(dateEntity.getDate());
        System.out.println("SimpleDateFormat格式化后的date:"+date);
        DateEntity result = new DateEntity();
        result.setDate(new Date());
        return result;
     }
}

創(chuàng)建好POJO和Controller后,用Postman模擬一下請(qǐng)求發(fā)送:

結(jié)果報(bào)錯(cuò):

大概意思就是說String類型轉(zhuǎn)換成Date類型失敗,所以報(bào)了IllegalArgumentException異常;

二、@JsonFormat注解

  • 提供者:jackson
  • 作用:可以約束時(shí)間的接收格式和響應(yīng)格式 (接收和響應(yīng)的都是JSON字符串),將日期類型數(shù)據(jù)在JSON格式和java.util.Date對(duì)象之間轉(zhuǎn)換。與傳輸方向沒有關(guān)系(前端到后端or后端到前端都可以使用),注意因?yàn)槲覀兪菛|八區(qū)(北京時(shí)間),使用時(shí)需要加上時(shí)區(qū)( timezone = “GMT+8”),不然所得值會(huì)比實(shí)際時(shí)間晚8小時(shí);
  • 常用注解屬性:
名稱作用
pattern約定時(shí)間格式:pattern=“yyyy-MM-dd HH:mm:ss”
timezone指定具體時(shí)區(qū): timezone = “GMT+8” or timezone = “Asia/Shanghai”
  • 經(jīng)過測(cè)試使用單獨(dú)使用@JsonFormat注解時(shí)需要先通過@RequestBody將入?yún)?shù)映射到實(shí)體后,@JsonFormat注解才能去對(duì)時(shí)間格式進(jìn)行約束;
  • 改造controller,加上了@RequestBody注解:
    @RequestMapping("/test")
    public DateEntity getDate(@RequestBody DateEntity dateEntity){
        System.out.println("入?yún)⒌膁ate:"+dateEntity.getDate());
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        String date = sdf.format(dateEntity.getDate());
        System.out.println("SimpleDateFormat格式化后的date:"+date);
        DateEntity result = new DateEntity();
        result.setDate(new Date());
        return result;
    }

POJO類中也加上了@JsonFormat注解:

@Data
public class DateEntity {
    @JsonFormat(pattern = "yyyy-MM-dd hh", timezone = "GMT+8")
    private Date date;
}

測(cè)試:

結(jié)果可以看出,@JsonFormat對(duì)時(shí)間格式進(jìn)行了約束 ,mm:ss并沒有按傳入的值顯示:

再看return的返回值中也可以看出輸出格式是完全按照@JsonFormat約定的時(shí)間格式(“yyyy-MM-dd hh”)進(jìn)行了輸出;

實(shí)際返回結(jié)果:

三、@DateTimeFormat注解

  • 提供者:Spring
  • 作用:可對(duì)java.util.Date、java.uitl.calendar、java.long.Long及Joda時(shí)間類型的屬性進(jìn)行標(biāo)注,主要處理前端時(shí)間類型與后端pojo對(duì)象中的成員變量進(jìn)行數(shù)據(jù)綁定,所約束的時(shí)間格式并不會(huì)影響后端返回前端的時(shí)間類型數(shù)據(jù)格式;
  • 注意(注意!注意!注意!講三遍):前端入?yún)?shù)據(jù)的時(shí)間格式必須與注解中定義的時(shí)間格式相同,不然會(huì)報(bào)錯(cuò),如:@DateTimeFormat(pattern = “yyyy-MM-dd HH:mm”) 則入?yún)⒌母袷奖仨殲?quot;2020-6-4 10:43";
  • 常用注解屬性:
名稱作用
iso類型為DateTimeFormat.ISO,常用值:
DateTimeFormat.ISO.DATE:格式為yyyy-MM-dd
DateTimeFormat.ISO.DATE_TIME:格式為yyyy-MM-dd hh:mm:ss.SSSZ
DateTimeFormat.ISO.TIME:格式為hh:mm:ss.SSSZ
DateTimeFormat.ISO.NONE:表示不使用ISO格式的時(shí)間(默認(rèn)值)
pattern類型為String,使用自定義時(shí)間格式化字符串,如"yyyy-MM-dd hh:mm:ss"
style類型為String,通過樣式指定日期時(shí)間的格式,由兩位字符組成,
第一位表示日期的樣式,第二位表示時(shí)間的格式,以下是幾個(gè)常用的可選值:
S:短日期/時(shí)間的樣式
M:中日期/時(shí)間的樣式
L:短日期/時(shí)間的樣式
F:完整日期/時(shí)間的樣子
-:忽略日期或時(shí)間的樣式
默認(rèn)值 style=“SS”

controller代碼:

 @RequestMapping("/test")
    public DateEntity getDate(DateEntity dateEntity){
        System.out.println("入?yún)⒌膁ate:"+dateEntity.getDate());
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        String date = sdf.format(dateEntity.getDate());
        System.out.println("SimpleDateFormat格式化后的date:"+date);
        DateEntity result = new DateEntity();
        Date date1 = new Date();
        result.setDate(date1);
        return result;
    }

POJO代碼:

@Data
public class DateEntity {
    @DateTimeFormat(pattern = "yyyy-MM-dd hh")
    private Date date;
}

測(cè)試:

-

結(jié)果:

五、總結(jié)@JsonFormat 和 @DateTimeFormat 區(qū)別

  • @JsonFormat 既可以約束前端傳入的時(shí)間類型參數(shù)格式,也可以約束后端響應(yīng)前端的時(shí)間類型格式;
  • @DateTimeFormat
    • 只能約束前端入?yún)r(shí)間類型的格式,并不會(huì)修改原有的日期對(duì)象的格式,如果想要獲得期望的日期格式,是需要自己手動(dòng)轉(zhuǎn)換的;
    • 如果單獨(dú)使用@DateTimeFormat 時(shí),響應(yīng)給前端的時(shí)間會(huì)比實(shí)際時(shí)間晚8個(gè)小時(shí)(時(shí)區(qū)原因)。
    • 針對(duì) @DateTimeFormat 做了補(bǔ)充說明,有場(chǎng)景示例比較詳情,需要的大佬可以看一下。傳送門:Spring @DateTimeFormat日期格式化時(shí)注解淺析分享

到此這篇關(guān)于@JsonFormat 和 @DateTimeFormat 時(shí)間格式化注解的文章就介紹到這了,更多相關(guān)@JsonFormat 和 @DateTimeFormat 內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java基礎(chǔ)之Comparable與Comparator概述

    Java基礎(chǔ)之Comparable與Comparator概述

    這篇文章主要介紹了Java基礎(chǔ)之Comparable與Comparator詳解,文中有非常詳細(xì)的代碼示例,對(duì)正在學(xué)習(xí)java基礎(chǔ)的小伙伴們有非常好的幫助,需要的朋友可以參考下
    2021-04-04
  • 專屬于程序員的浪漫-Java輸出動(dòng)態(tài)閃圖iloveyou

    專屬于程序員的浪漫-Java輸出動(dòng)態(tài)閃圖iloveyou

    這篇文章主要介紹了專屬于程序員的浪漫-Java輸出動(dòng)態(tài)閃圖iloveyou,具有一定參考價(jià)值,需要的朋友可以了解下。
    2017-11-11
  • Java人機(jī)猜拳實(shí)現(xiàn)的思路及方法實(shí)例

    Java人機(jī)猜拳實(shí)現(xiàn)的思路及方法實(shí)例

    這篇文章主要給大家介紹了關(guān)于Java人機(jī)猜拳實(shí)現(xiàn)的思路及方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12
  • 詳細(xì)總結(jié)IDEA中打jar包的兩種方式

    詳細(xì)總結(jié)IDEA中打jar包的兩種方式

    發(fā)現(xiàn)有很多小伙伴都不會(huì)用IDEA打jar包,今天給大家詳細(xì)總結(jié)了兩種IDEA打jar包的方式,對(duì)正在學(xué)習(xí)IDEA使用的小伙伴很有幫助,需要的朋友可以參考下
    2021-05-05
  • Spring?@Autowired注解超詳細(xì)示例

    Spring?@Autowired注解超詳細(xì)示例

    @Autowired注解可以用在類屬性,構(gòu)造函數(shù),setter方法和函數(shù)參數(shù)上,該注解可以準(zhǔn)確地控制bean在何處如何自動(dòng)裝配的過程。在默認(rèn)情況下,該注解是類型驅(qū)動(dòng)的注入
    2022-08-08
  • Java實(shí)現(xiàn)全圖背景水印的示例詳解

    Java實(shí)現(xiàn)全圖背景水印的示例詳解

    這篇文章主要為大家詳細(xì)介紹了如何利用Java實(shí)現(xiàn)全圖背景水印的方法,文中的示例代碼講解詳細(xì),具有一定的借鑒價(jià)值,需要的可以參考一下
    2023-02-02
  • java對(duì)同一個(gè)文件進(jìn)行讀寫操作方法

    java對(duì)同一個(gè)文件進(jìn)行讀寫操作方法

    在本篇文章里我們給大家詳細(xì)講述了java對(duì)同一個(gè)文件進(jìn)行讀寫操作的方法和知識(shí)點(diǎn),需要的朋友們可以參考學(xué)習(xí)下。
    2018-10-10
  • SpringBoot啟動(dòng)后初始化的幾種方式匯總

    SpringBoot啟動(dòng)后初始化的幾種方式匯總

    這篇文章主要介紹了SpringBoot啟動(dòng)后初始化的幾種方式匯總,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2025-04-04
  • Spring復(fù)雜對(duì)象創(chuàng)建的方式小結(jié)

    Spring復(fù)雜對(duì)象創(chuàng)建的方式小結(jié)

    這篇文章主要介紹了Spring復(fù)雜對(duì)象創(chuàng)建的三種方式,現(xiàn)在使用Spring如何創(chuàng)建這種類型的對(duì)象?Spring中提供了三種方法來創(chuàng)建復(fù)雜對(duì)象,需要的朋友可以參考下
    2022-01-01
  • JAVA IO API使用詳解

    JAVA IO API使用詳解

    本文通過理論、用法、實(shí)例詳細(xì)說明了JAVA IO的使用,大家參考其中的實(shí)例代碼實(shí)現(xiàn)自己的JAVA IO程序
    2013-11-11

最新評(píng)論

互助| 泾源县| 乐昌市| 海宁市| 金坛市| 沛县| 大名县| 来宾市| 中西区| 开封市| 隆德县| 建水县| 堆龙德庆县| 拉孜县| 阳春市| 平顶山市| 青川县| 兴国县| 兴文县| 华安县| 涡阳县| 乐都县| 新宁县| 淮安市| 绥江县| 改则县| 剑川县| 安义县| 华亭县| 卢氏县| 庆城县| 太白县| 田林县| 崇州市| 社会| 永安市| 横山县| 读书| 武邑县| 桐乡市| 平罗县|