springboot接收日期類(lèi)型參數(shù)的操作方法
嘮嗑部分
在做Java開(kāi)發(fā)時(shí),肯定會(huì)碰到傳遞時(shí)間參數(shù)的情況吧,比如用戶的出生日期、活動(dòng)的開(kāi)始,結(jié)束日期等等,這些參數(shù)往往是由前端傳遞過(guò)來(lái)的,那么在SpringBoot項(xiàng)目中,該如何正確的接收日期參數(shù)呢,這便是我們今日所說(shuō)的內(nèi)容
首先我們來(lái)回顧一下常用的幾種傳參方式
1、Params參數(shù)
Params參數(shù)也稱路徑傳參,參數(shù)是路徑的一部分,如:http://127.0.0.1:8888/date/receiveParamOfParams/2023-05-22
2、Query參數(shù)
Query參數(shù)通常使用?進(jìn)行傳遞,多個(gè)參數(shù)使用&分割,如:http://127.0.0.1:8888/date/receiveParamOfQuery?bothDate=2023-05-22
3、請(qǐng)求體參數(shù)
請(qǐng)求體參數(shù)也是我們常用的json傳參
那么為什么要回顧傳參方式呢,難道說(shuō)傳參方式不同,接收日期參數(shù)的方式也不一樣嗎?是的沒(méi)錯(cuò)
下面步入正文。
springboot接收日期類(lèi)型參數(shù)
如果使用Get請(qǐng)求,直接使用對(duì)象接收,則可以使用@DateTimeFormat注解進(jìn)行格式化,如:
@DateTimeFormat(pattern = "yyyy-MM-dd") private Date startBuyDate;
如果使用Post請(qǐng)求,@RequestBody接收請(qǐng)求體參數(shù),默認(rèn)解析日期格式為yyyy-MM-dd HH:mm:ss , 如果需要接收其他格式的參數(shù),則可以使用@JsonFormat注解,如:
@JsonFormat(timezone="GMT+8",pattern="yyyy-MM-dd") private Date buyDate;
也可以使用java8新增的LocalDate自定義序列化,如:
@Configuration @ConditionalOnClass(ObjectMapper.class) @AutoConfigureBefore(JacksonAutoConfiguration.class) public class JacksonConfig { @Bean public Jackson2ObjectMapperBuilderCustomizer customizer() { return builder -> { builder.locale(Locale.CHINA); builder.timeZone(TimeZone.getTimeZone(ZoneId.systemDefault())); builder.simpleDateFormat(DatePattern.NORM_DATETIME_PATTERN); builder.modules(new TimeModule()); }; } }
public class TimeModule extends SimpleModule { public TimeModule() { super(PackageVersion.VERSION); this.addSerializer(LocalDateTime.class, new LocalDateTimeSerializer(DateTimeFormatter.ofPattern(DatePattern.NORM_DATETIME_PATTERN))); this.addSerializer(LocalDate.class, new LocalDateSerializer(DateTimeFormatter.ofPattern(DatePattern.NORM_DATE_PATTERN))); this.addSerializer(LocalTime.class, new LocalTimeSerializer(DateTimeFormatter.ofPattern(DatePattern.NORM_TIME_PATTERN))); this.addDeserializer(LocalDateTime.class, new LocalDateTimeDeserializer(DateTimeFormatter.ofPattern(DatePattern.NORM_DATETIME_PATTERN))); this.addDeserializer(LocalDate.class, new LocalDateDeserializer(DateTimeFormatter.ofPattern(DatePattern.NORM_DATE_PATTERN))); this.addDeserializer(LocalTime.class, new LocalTimeDeserializer(DateTimeFormatter.ofPattern(DatePattern.NORM_TIME_PATTERN))); } }
//yyyy-MM-dd HH:mm:ss private LocalDateTime buyDateTime; //yyyy-MM-dd private LocalDate buyDate; //HH:mm:ss private LocalTime buyTime;
擴(kuò)展:
springboot項(xiàng)目接收一個(gè)日期類(lèi)型參數(shù)
1. 在Controller的方法參數(shù)中使用@RequestParam
注解接收日期參數(shù),可以通過(guò)指定日期格式實(shí)現(xiàn),例如:
@GetMapping("/api/date") public String getDate(@RequestParam("date") @DateTimeFormat(pattern = "yyyy-MM-dd") Date date) { // ... }
2.使用@PathVariable
注解接收日期參數(shù),例如
@GetMapping("/api/date/{date}") public String getDate(@PathVariable("date") @DateTimeFormat(pattern = "yyyy-MM-dd") Date date) { // ... }
3. 在請(qǐng)求體中發(fā)送JSON格式的數(shù)據(jù),并使用@RequestBody
注解接收日期類(lèi)型的字段,例如:
@PostMapping("/api/date") public String getDate(@RequestBody RequestBodyDto requestBodyDto) { Date date = requestBodyDto.getDate(); // ... }
其中,RequestBodyDto
為請(qǐng)求體對(duì)應(yīng)的Java對(duì)象,可以使用@JsonFormat
注解指定日期格式,例如:
public class RequestBodyDto { @JsonFormat(pattern = "yyyy-MM-dd") private Date date; // getter/setter }
無(wú)論使用哪種方式接收日期參數(shù),都需要注意指定日期格式,以避免類(lèi)型轉(zhuǎn)換錯(cuò)誤和日期格式化異常。
到此這篇關(guān)于springboot接收日期類(lèi)型參數(shù)的文章就介紹到這了,更多相關(guān)springboot日期類(lèi)型參數(shù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
mybatis?collection和association的區(qū)別解析
這篇文章主要介紹了mybatis?collection解析以及和association的區(qū)別,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-07-07Java使用Sharding-JDBC分庫(kù)分表進(jìn)行操作
Sharding-JDBC 是無(wú)侵入式的 MySQL 分庫(kù)分表操作工具,本文主要介紹了Java使用Sharding-JDBC分庫(kù)分表進(jìn)行操作,感興趣的可以了解一下2021-08-08Java高級(jí)特性之反射機(jī)制實(shí)例詳解
這篇文章主要介紹了Java高級(jí)特性之反射機(jī)制,結(jié)合實(shí)例形式詳細(xì)分析了Java反射機(jī)制原理、功能、使用方法及相關(guān)操作注意事項(xiàng),需要的朋友可以參考下2018-08-08使用IntelliJ IDEA調(diào)式Stream流的方法步驟
本文主要介紹了使用IntelliJ IDEA調(diào)式Stream流的方法步驟,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-05-05解決swaggerUI頁(yè)面沒(méi)有顯示Controller方法的坑
這篇文章主要介紹了解決swaggerUI頁(yè)面沒(méi)有顯示Controller方法的坑,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-06-06