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

java中@DateTimeFormat和@JsonFormat注解的使用

 更新時間:2022年08月17日 15:39:40   作者:月下泛舟  
本文主要介紹了java中@DateTimeFormat和@JsonFormat注解的使用,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

1. 準備

定義一個pojo,它有一個 java.util.Date 類型的屬性 date。

import java.util.Date;
 
public class DateVo {
    private Date date;
 
    public void setDate(Date date){
        this.date = date;
    }
    public Date getDate(){
        return date;
    }
}

定義一個Controller

@RestController
@RequestMapping("/date/")
public class DateController {
 
    @RequestMapping("test")
    public DateVo getDate(DateVo vo){
        System.out.println("date1:"+vo.getDate());
 
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        String date = sdf.format(vo.getDate());
        System.out.println("date2:"+date);
 
        DateVo vo2 = new DateVo();
        vo2.setDate(new Date());
        return vo2;
    }
}

訪問 /date/test ,并傳入?yún)?shù):2018-08-02 22:05:55

發(fā)現(xiàn)并不能訪問成功,會拋出異常:

因為傳入的參數(shù)是 String 類型的,而用來接收參數(shù)的 DateVo 的 date 屬性是 java.util.Date 類型的,類型無法轉(zhuǎn)換。

2. 入?yún)⒏袷交?/h2>

這時,就可以使用 Spring 的 @DateTimeFormat 注解格式化參數(shù),來解決上述問題。

改造 DateVo:

public class DateVo {
    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
    private Date date;
 
    public void setDate(Date date){
        this.date = date;
    }
    public Date getDate(){
        return date;
    }
}

再像上面一樣訪問 /date/test ,并傳入?yún)?shù):2018-08-02 22:05:55,將在控制臺上打?。?/p>

date1:Thu Aug 02 22:05:55 CST 2018

date2:2018-08-02 22:05:55

可以看到,加入 @DateTimeFormat 注解后參數(shù)可以被接收到了,但日期時間的格式還是需要自己再手動轉(zhuǎn)換一下。

因為 @DateTimeFormat 注解的 pattern 屬性值指定的日期時間格式并不是將要轉(zhuǎn)換成的日期格式,這個指定的格式是和傳入的參數(shù)對應的,假如注解為:

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

則傳入的參數(shù)應該是這樣的:

2018/08/02 22:05:55

否則會拋出異常。

3. 出參格式化

在上述示例中,調(diào)用接口的返回結(jié)果為:

"date": "2018-08-01T14:25:31.296+0000"

這個格式并不是我們想要的,那么如何將其進行格式化?這時就需要用到 jackson 的 @JsonFormat 注解。

改造 DateVo:

public class DateVo {
    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
    @JsonFormat(
            pattern = "yyyy-MM-dd HH:mm:ss"
    )
    private Date date;
 
    public void setDate(Date date){
        this.date = date;
    }
    public Date getDate(){
        return date;
    }
}

繼續(xù)訪問 /date/test ,并傳入?yún)?shù):2018-08-02 22:05:55,可以看到接口返回的結(jié)果為:

"date": "2018-08-01 14:32:57"

雖然時間格式正確了,但實際上當前時間是 “2018-08-01 22:32:57” ,早了8個小時。因為,jackson在序列化時間時是按照國際標準時間GMT進行格式化的,而在國內(nèi)默認時區(qū)使用的是CST時區(qū),兩者相差8小時。

所以,@JsonFormat 注解還要再加一個屬性:

@JsonFormat(
    pattern = "yyyy-MM-dd HH:mm:ss",
    timezone = "GMT+8"
)
private Date date;

這樣,結(jié)果就正確了。

因為 @JsonFormat 注解不是 Spring 自帶的注解,所以使用該注解前需要添加 jackson 相關(guān)的依賴包。當然,如果是 SpringBoot 項目就不需要自己手動添加依賴了,因為在 spring-boot-start-web 下已經(jīng)包含了 jackson 相關(guān)依賴。

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

相關(guān)文章

  • SpringBoot2.0 整合 Dubbo框架實現(xiàn)RPC服務遠程調(diào)用方法

    SpringBoot2.0 整合 Dubbo框架實現(xiàn)RPC服務遠程調(diào)用方法

    這篇文章主要介紹了SpringBoot2.0 整合 Dubbo框架 實現(xiàn)RPC服務遠程調(diào)用 ,本文給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-07-07
  • Spring如何實現(xiàn)輸出帶動態(tài)標簽的日志

    Spring如何實現(xiàn)輸出帶動態(tài)標簽的日志

    文章介紹了如何通過動態(tài)標簽日志實現(xiàn),解決了部分業(yè)務代碼在多個模塊中調(diào)用時日志無法直觀看出來源的問題,主要通過ThreadLocal存儲業(yè)務標簽,并在日志輸出時插入該標簽,實現(xiàn)日志的動態(tài)標簽功能,感興趣的朋友一起看看吧
    2024-12-12
  • java 實現(xiàn)websocket的兩種方式實例詳解

    java 實現(xiàn)websocket的兩種方式實例詳解

    這篇文章主要介紹了java 實現(xiàn)websocket的兩種方式實例詳解,一種使用tomcat的websocket實現(xiàn),一種使用spring的websocket,本文通過代碼給大家介紹的非常詳細,需要的朋友可以參考下
    2018-07-07
  • SpringCloud組件性能優(yōu)化的技巧

    SpringCloud組件性能優(yōu)化的技巧

    這篇文章主要介紹了SpringCloud組件性能優(yōu)化的技巧,Springcloud?原始的配置,性能是很低的,大家可以使用?Jmeter?測試一下,QPS?不會到?50,要做到高并發(fā),需要做不少的配置優(yōu)化,需要的朋友可以參考下
    2023-09-09
  • 實現(xiàn)Java刪除一個集合的多個元素

    實現(xiàn)Java刪除一個集合的多個元素

    Java中的For each實際上使用的是iterator進行處理的。而iterator是不允許集合在iterator使用期間刪除的。而我在for each時,從集合中刪除了一個元素,這導致了iterator拋出了ConcurrentModificationException,下面來看看到底怎么回事。
    2016-08-08
  • java 用redisTemplate 的 Operations存取list集合操作

    java 用redisTemplate 的 Operations存取list集合操作

    這篇文章主要介紹了java 用redisTemplate 的 Operations存取list集合操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-08-08
  • 基于ArrayList初始化長度的作用及影響

    基于ArrayList初始化長度的作用及影響

    這篇文章主要介紹了基于ArrayList初始化長度的作用及影響,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-03-03
  • IDEA離線安裝maven helper插件的圖文教程

    IDEA離線安裝maven helper插件的圖文教程

    本文通過圖文并茂的形式給大家介紹IDEA離線安裝maven helper插件,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2021-08-08
  • Java版畫板的實現(xiàn)方法

    Java版畫板的實現(xiàn)方法

    這篇文章主要為大家詳細介紹了Java版畫板的實現(xiàn)方法,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-07-07
  • MyBatis在insert插入操作時返回主鍵ID的配置(推薦)

    MyBatis在insert插入操作時返回主鍵ID的配置(推薦)

    這篇文章主要介紹了MyBatis在insert插入操作時返回主鍵ID的配置的相關(guān)資料,需要的朋友可以參考下
    2017-10-10

最新評論

延庆县| 平湖市| 枣庄市| 洛川县| 涿鹿县| 富民县| 聂拉木县| 古交市| 阿拉尔市| 千阳县| 汨罗市| 丰原市| 获嘉县| 屏边| 台江县| 登封市| 江油市| 故城县| 平原县| 额尔古纳市| 大埔区| 嘉鱼县| 丹凤县| 冷水江市| 全椒县| 湘潭市| 巴青县| 乌拉特前旗| 岳阳市| 剑河县| 朝阳区| 东宁县| 沙田区| 庆元县| 高州市| 郴州市| 田东县| 得荣县| 腾冲县| 灵武市| 曲周县|