Springboot入參時間格式問題

一 自帶jackson處理方式

1、返回參數去除null值蛋哭,使用注解@JsonInclude(JsonInclude.Include.NON_NULL)

@JsonInclude(JsonInclude.Include.NON_NULL)

自帶的jackson轉化的時候注益, 默認的時間格式y(tǒng)yyy-MM-dd'T'HH:mm:ss.SSS予弧,也支持

  1. 時間戳格式(1565003805835)匾浪,
  2. 2019-08-05
  3. 2019-08-05T19:09:450
  4. 2019-08-05T19:09:45+08:00
  5. 傳入yyyy-MM-dd HH:mm:ss這種格式刺桃,會拋出異常
19:32:10.114 [http-nio-7012-exec-7] WARN  o.s.w.s.m.s.DefaultHandlerExceptionResolver - Resolved exception caused by Handler execution: org.springframework.http.converter.HttpMessageNotReadableException: JSON parse error: Can not deserialize value of type java.util.Date from String "2019-08-05 T 19:16:45": not a valid representation (error: Failed to parse Date value '2019-08-05 T 19:16:45': Can not parse date "2019-08-05 T 19:16:450": while it seems to fit format 'yyyy-MM-dd'T'HH:mm:ss.SSS', parsing fails (leniency? null)); nested exception is com.fasterxml.jackson.databind.exc.InvalidFormatException: Can not deserialize value of type java.util.Date from String "2019-08-05 T 19:16:45": not a valid representation (error: Failed to parse Date value '2019-08-05 T 19:16:45': Can not parse date "2019-08-05 T 19:16:450": while it seems to fit format 'yyyy-MM-dd'T'HH:mm:ss.SSS', parsing fails (leniency? null))

2. 入參格式化

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

改造 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 漫谷,并傳入參數:2018-08-02 22:05:55仔雷,將在控制臺上打印:

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

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

可以看到舔示,加入 @DateTimeFormat 注解后參數可以被接收到了碟婆,但日期時間的格式還是需要自己再手動轉換一下。

因為 @DateTimeFormat 注解的 pattern 屬性值指定的日期時間格式并不是將要轉換成的日期格式惕稻,這個指定的格式是和傳入的參數對應的竖共,假如注解為:

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

則傳入的參數應該是這樣的:

2018/08/02 22:05:55

否則會拋出異常。

3. 出參格式化 (springboot默認返回格式為時間戳)

假如出參格式 "date": "1565003805835"

這個格式并不是我們想要的俺祠,那么如何將其進行格式化公给?這時就需要用到 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;
    }
}

傳入參數:2018-08-02 22:05:55蜘渣,可以看到接口返回的結果為:

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

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

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


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

二 fastjson

還原沖統(tǒng)一格式fastjson校驗弟跑,時間格式傳入可以同時兼任時間戳和日期類型

fastjson方式

public class MySpringBootApplication extends WebMvcConfigurerAdapter {

  @Override
    public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
        super.configureMessageConverters(converters);
        FastJsonHttpMessageConverter converter = new FastJsonHttpMessageConverter();
        FastJsonConfig fastJsonConfig = new FastJsonConfig();
        fastJsonConfig.setSerializerFeatures(SerializerFeature.PrettyFormat);
        converter.setFastJsonConfig(fastJsonConfig);
        converters.add(converter);
    }

    public static void main(String[] args) {
        SpringApplication.run(MySpringBootApplication .class, args);
    }
}

參考:https://blog.csdn.net/zhou520yue520/article/details/81348926

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末灾前,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子窖认,更是在濱河造成了極大的恐慌豫柬,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,692評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件扑浸,死亡現場離奇詭異烧给,居然都是意外死亡,警方通過查閱死者的電腦和手機喝噪,發(fā)現死者居然都...
    沈念sama閱讀 92,482評論 3 392
  • 文/潘曉璐 我一進店門础嫡,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人酝惧,你說我怎么就攤上這事榴鼎。” “怎么了晚唇?”我有些...
    開封第一講書人閱讀 162,995評論 0 353
  • 文/不壞的土叔 我叫張陵巫财,是天一觀的道長。 經常有香客問我哩陕,道長平项,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,223評論 1 292
  • 正文 為了忘掉前任悍及,我火速辦了婚禮闽瓢,結果婚禮上,老公的妹妹穿的比我還像新娘心赶。我一直安慰自己扣讼,他們只是感情好,可當我...
    茶點故事閱讀 67,245評論 6 388
  • 文/花漫 我一把揭開白布缨叫。 她就那樣靜靜地躺著椭符,像睡著了一般。 火紅的嫁衣襯著肌膚如雪弯汰。 梳的紋絲不亂的頭發(fā)上艰山,一...
    開封第一講書人閱讀 51,208評論 1 299
  • 那天,我揣著相機與錄音咏闪,去河邊找鬼曙搬。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的纵装。 我是一名探鬼主播征讲,決...
    沈念sama閱讀 40,091評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼橡娄!你這毒婦竟也來了诗箍?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 38,929評論 0 274
  • 序言:老撾萬榮一對情侶失蹤挽唉,失蹤者是張志新(化名)和其女友劉穎滤祖,沒想到半個月后,有當地人在樹林里發(fā)現了一具尸體瓶籽,經...
    沈念sama閱讀 45,346評論 1 311
  • 正文 獨居荒郊野嶺守林人離奇死亡匠童,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,570評論 2 333
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現自己被綠了塑顺。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片汤求。...
    茶點故事閱讀 39,739評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖严拒,靈堂內的尸體忽然破棺而出扬绪,到底是詐尸還是另有隱情,我是刑警寧澤裤唠,帶...
    沈念sama閱讀 35,437評論 5 344
  • 正文 年R本政府宣布挤牛,位于F島的核電站,受9級特大地震影響种蘸,放射性物質發(fā)生泄漏赊颠。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,037評論 3 326
  • 文/蒙蒙 一劈彪、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧顶猜,春花似錦沧奴、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,677評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至挠日,卻和暖如春疮绷,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背嚣潜。 一陣腳步聲響...
    開封第一講書人閱讀 32,833評論 1 269
  • 我被黑心中介騙來泰國打工冬骚, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 47,760評論 2 369
  • 正文 我出身青樓只冻,卻偏偏與公主長得像庇麦,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子喜德,可洞房花燭夜當晚...
    茶點故事閱讀 44,647評論 2 354