Java關(guān)于后端怎么去接收Date、LocalDateTime類型的參數(shù)詳解
1、接收date類型的參數(shù)
Date類型后端入?yún)⒌母袷侥J(rèn)為2019/01/18 11:11:11
1.1、Get方式傳參
Get方式傳參 是 沒有時(shí)區(qū)的影響的
@JsonFormat的作用: 返回給前端的時(shí)間是經(jīng)過@JsonFormat格式化的時(shí)間。
@DateTimeFormat的作用: 前端需要按照@DateTimeForma的格式進(jìn)行傳參
示例:
Date 類型直接作為參數(shù)的情況
/** * http://localhost:8080/test1?date=2019-01-18 11:11:11 */ @RequestMapping(value = "/test1",method = RequestMethod.GET) @ResponseBody public void test1(@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") Date date){ System.out.println(date);//Fri Jan 18 11:11:11 CST 2019 }
Date類型屬性的實(shí)體類作為參數(shù)的情況
public class DateTestVO { private Date finishDate; } @RequestMapping(value = "/test2",method = RequestMethod.GET) @ResponseBody public void test2(DateTestVO vo){ System.out.println(vo); System.out.println(vo.getFinishDate()); return vo; }
實(shí)體類中沒有使用注解的時(shí)候
使用的是默認(rèn)格式的入?yún)ⅲ? http://localhost:8080/test2?finishDate=2019/01/18 11:11:11 打印日志,正常: DateTestVO{finishDate=Fri Jan 18 11:11:11 CST 2019} Fri Jan 18 11:11:11 CST 2019 返回的是沒有經(jīng)過格式化的時(shí)間: { "finishDate": "2019-01-18T03:11:11.000+0000" }
實(shí)體類中使用@JsonFormat注解的時(shí)候
@JsonFormat(pattern = “yyyy-MM-dd HH:mm:ss”,timezone=“GMT+8”)
使用的是默認(rèn)格式的入?yún)ⅲ? http://localhost:8080/test2?finishDate=2019/01/18 11:11:11 打印日志,正常: DateTestVO{finishDate=Fri Jan 18 11:11:11 CST 2019} Fri Jan 18 11:11:11 CST 2019 返回@JsonFormat格式的時(shí)間: { "finishDate": "2019-01-18 11:11:11" }
實(shí)體類中使用@JsonFormat和@DateTimeFormat注解的時(shí)候
@JsonFormat(pattern = “yyyy-MM-dd HH:mm:ss”,timezone=“GMT+8”)
@DateTimeFormat(pattern = “yyyy-MM-dd HH:mm:ss”)
使用@DateTimeFormat格式的入?yún)ⅲ? http://localhost:8080/test2?finishDate=2019-01-18 11:11:11 打印日志,正常: DateTestVO{finishDate=Fri Jan 18 11:11:11 CST 2019} Fri Jan 18 11:11:11 CST 2019 返回@JsonFormat格式的時(shí)間: { "finishDate": "2019-01-18 11:11:11" }
1.2、POST方式傳參
有時(shí)區(qū)的影響
@JsonFormat的作用:
1、后臺(tái)接收后,沒有時(shí)區(qū)的影響
2、返回給前端是格式化的時(shí)間
3、后端的入?yún)凑誁JsonFormat的格式傳參(并沒有使用@DateTimeFormat來格式化后端的入?yún)ⅲ?/p>
示例:
public class DateTestVO { private Date finishDate; } @RequestMapping(value = "/test3",method = RequestMethod.POST) @ResponseBody public DateTestVO test3(@RequestBody DateTestVO vo){ System.out.println(vo); System.out.println(vo.getFinishDate()); return vo; }
實(shí)體類中沒有使用注解的時(shí)候
入?yún)ⅲ? { "finishDate": "2019-01-18" } 打印日志,多了8個(gè)小時(shí): DateTestVO{finishDate=Fri Jan 18 08:00:00 CST 2019} Fri Jan 18 08:00:00 CST 2019 返回結(jié)果,沒有多出8個(gè)小時(shí)、沒有格式化的時(shí)間: { "finishDate": "2019-01-18T00:00:00.000+0000" }
入?yún)ⅲ? { "finishDate": "2019-01-18T11:11:11" } 打印日志,多了8個(gè)小時(shí): DateTestVO{finishDate=Fri Jan 18 19:11:11 CST 2019} Fri Jan 18 19:11:11 CST 2019 返回結(jié)果,沒有多出8個(gè)小時(shí)、沒有格式化的時(shí)間: { "finishDate": "2019-01-18T11:11:11.000+0000" }
實(shí)體類中使用@JsonFormat注解的時(shí)候
public class DateTestVO { //@JsonFormat(pattern = "yyyy-MM-dd",timezone="GMT+8") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8") private Date finishDate; } @RequestMapping(value = "/test3",method = RequestMethod.POST) @ResponseBody public DateTestVO test3(@RequestBody DateTestVO vo){ System.out.println(vo); System.out.println(vo.getFinishDate()); return vo; }
注解為:
@JsonFormat(pattern = “yyyy-MM-dd”,timezone=“GMT+8”)
入?yún)ⅲ? { "finishDate": "2019-01-18" } 打印日志,正常: DateTestVO{finishDate=Fri Jan 18 00:00:00 CST 2019} Fri Jan 18 00:00:00 CST 2019 返回@JsonFormat格式的時(shí)間: { "finishDate": "2019-01-18" }
注解為:
@JsonFormat(pattern = “yyyy-MM-dd HH:mm:ss”,timezone=“GMT+8”)
入?yún)ⅲ? { "finishDate": "2019-01-18 11:11:11" } 打印日志,正常: DateTestVO{finishDate=Fri Jan 18 11:11:11 CST 2019} Fri Jan 18 11:11:11 CST 2019 返回@JsonFormat格式的時(shí)間: { "finishDate": "2019-01-18 11:11:11" }
總結(jié):
為了同時(shí)照顧GET、POST方式,@JsonFormat、@DateTimeForma都使用。
2、后端接收LocalDateTime類型的參數(shù)
LocalDateTime 在GMT+8 默認(rèn)格式為 yyyy-MM-ddTHH:mm:ss,如 2021-01-01T10:15:12
2.1、GET方式傳參
public class DateTestVO { //出參的格式化 @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8") //入?yún)⒌母袷交? @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") private Date finishDate; //入?yún)⒌母袷交? @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") private LocalDateTime overDate; } @RequestMapping(value = "/test2",method = RequestMethod.GET) @ResponseBody public DateTestVO test2(DateTestVO vo){ System.out.println(vo); System.out.println(vo.getFinishDate()); System.out.println(vo.getOverDate()); return vo; }
overDate使用注解:
@DateTimeFormat(pattern = “yyyy-MM-dd HH:mm:ss”)
入?yún)ⅲ? http://localhost:8080/test2?finishDate=2019-01-18 11:11:11&overDate=2019-01-18 11:11:11 打印日志,正常: DateTestVO{finishDate=Fri Jan 18 11:11:11 CST 2019, overDate=2019-01-18T11:11:11} Fri Jan 18 11:11:11 CST 2019 2019-01-18T11:11:11 返回結(jié)果,overDate是未格式化的時(shí)間: { "finishDate": "2019-01-18 11:11:11", "overDate": "2019-01-18T11:11:11" }
overDate使用注解:
@JsonFormat(pattern = “yyyy-MM-dd HH:mm:ss”,timezone=“GMT+8”)
@DateTimeFormat(pattern = “yyyy-MM-dd HH:mm:ss”)
入?yún)ⅲ? http://localhost:8080/test2?finishDate=2019-01-18 11:11:11&overDate=2019-01-18 11:11:11 打印日志,正常: DateTestVO{finishDate=Fri Jan 18 11:11:11 CST 2019, overDate=2019-01-18T11:11:11} Fri Jan 18 11:11:11 CST 2019 2019-01-18T11:11:11 返回結(jié)果,正常: { "finishDate": "2019-01-18 11:11:11", "overDate": "2019-01-18 11:11:11" }
2.2、POST方式傳參
public class DateTestVO { //出參的格式化 @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8") //入?yún)⒌母袷交? @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") private Date finishDate; private LocalDateTime overDate; } @RequestMapping(value = "/test3",method = RequestMethod.POST) @ResponseBody public DateTestVO test3(@RequestBody DateTestVO vo){ System.out.println(vo); System.out.println(vo.getFinishDate()); System.out.println(vo.getOverDate()); return vo; }
入?yún)?,overDate里邊包含了T: { "finishDate": "2019-01-18 11:11:11", "overDate": "2019-01-18T11:11:11" } 打印日志,正常: DateTestVO{finishDate=Fri Jan 18 11:11:11 CST 2019, overDate=2019-01-18T11:11:11} Fri Jan 18 11:11:11 CST 2019 2019-01-18T11:11:11 返回結(jié)果,overDate包含T: { "finishDate": "2019-01-18 11:11:11", "overDate": "2019-01-18T11:11:11" }
overDate使用注解:
@JsonFormat(pattern = “yyyy-MM-dd HH:mm:ss”,timezone=“GMT+8”)
入?yún)ⅲ? { "finishDate": "2019-01-18 11:11:11", "overDate": "2019-01-19 11:11:11" } 打印日志,正常: DateTestVO{finishDate=Fri Jan 18 11:11:11 CST 2019, overDate=2019-01-19T11:11:11} Fri Jan 18 11:11:11 CST 2019 2019-01-19T11:11:11 返回結(jié)果,正常: { "finishDate": "2019-01-18 11:11:11", "overDate": "2019-01-19 11:11:11" }
overDate使用注解:
@JsonFormat(pattern = “yyyy-MM-dd HH:mm:ss”,timezone=“GMT+8”)
@DateTimeFormat(pattern = “yyyy-MM-dd HH:mm:ss”)
入?yún)ⅲ? { "finishDate": "2019-01-18 11:11:11", "overDate": "2019-01-18 11:11:11" } 打印日志,正常: DateTestVO{finishDate=Fri Jan 18 11:11:11 CST 2019, overDate=2019-01-18T11:11:11} Fri Jan 18 11:11:11 CST 2019 2019-01-18T11:11:11 返回結(jié)果,正常: { "finishDate": "2019-01-18 11:11:11", "overDate": "2019-01-18 11:11:11" }
SpringBoot 中LocalDateTime日期格式化:
https://blog.csdn.net/w851685279/article/details/114685542
有問題,請多多指正!
到此這篇關(guān)于Java關(guān)于后端怎么去接收Date、LocalDateTime類型的參數(shù)詳解的文章就介紹到這了,更多相關(guān)Java接收Date、LocalDateTime類型參數(shù)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- java用LocalDateTime類獲取當(dāng)天時(shí)間、前一天時(shí)間及本周/本月的開始和結(jié)束時(shí)間
- 如何使用Java?8中DateTimeFormatter類型轉(zhuǎn)換日期格式詳解
- Java中@DateTimeFormat @JsonFormat失效原因及測試填坑
- Java8中對于LocalDateTime的序列化和反序列化問題
- Java8中的LocalDateTime你會(huì)使用了嗎
- java Date獲取年月日時(shí)分秒的實(shí)現(xiàn)方法
- java整數(shù)(秒數(shù))轉(zhuǎn)換為時(shí)分秒格式的示例
- Java輸出系統(tǒng)當(dāng)前的日期(年月日時(shí)分秒毫秒)
- Java里得到00:00:00格式的時(shí)分秒的Timestamp
- java datetime數(shù)據(jù)類型去掉時(shí)分秒的案例詳解
相關(guān)文章
SpringBoot整合Spring?Security過濾器鏈加載執(zhí)行流程源碼分析(最新推薦)
Spring?Boot?對于?Spring?Security?提供了自動(dòng)化配置方案,可以使用更少的配置來使用?Spring?Security,這篇文章主要介紹了SpringBoot整合Spring?Security過濾器鏈加載執(zhí)行流程源碼分析,需要的朋友可以參考下2023-02-02Java struts2 package元素配置及實(shí)例解析
這篇文章主要介紹了Java struts2 package元素配置及實(shí)例解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-11-11Intellij IDEA使用restclient測試的教程圖解
這篇文章主要介紹了Intellij IDEA使用restclient測試的教程圖解,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-01-01Java?OpenCV學(xué)習(xí)之Mat的基本操作詳解
OpenCV用來存儲(chǔ)圖像,很多時(shí)候都會(huì)用到這個(gè)Mat方法。數(shù)字圖像可看做一個(gè)數(shù)值矩陣,?其中的每一個(gè)元素表明一個(gè)像素點(diǎn)。Mat在?OpenCV?中表示的是?N?維稠密矩陣,與稠密矩陣相對的是稀疏矩陣。本文將重點(diǎn)介紹OpenCV中Mat的一些基本操作,需要的可以參考一下2022-03-03mybatis的動(dòng)態(tài)sql之if test的使用說明
這篇文章主要介紹了mybatis的動(dòng)態(tài)sql之if test的使用說明,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-02-02你應(yīng)該知道的這些Mybatis-Plus使用技巧(小結(jié))
這篇文章主要介紹了你應(yīng)該知道的這些Mybatis-Plus使用技巧(小結(jié)),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-08-08