springboot接收日期類型參數的操作方法
嘮嗑部分
在做Java開發(fā)時,肯定會碰到傳遞時間參數的情況吧,比如用戶的出生日期、活動的開始,結束日期等等,這些參數往往是由前端傳遞過來的,那么在SpringBoot項目中,該如何正確的接收日期參數呢,這便是我們今日所說的內容
首先我們來回顧一下常用的幾種傳參方式
1、Params參數
Params參數也稱路徑傳參,參數是路徑的一部分,如:http://127.0.0.1:8888/date/receiveParamOfParams/2023-05-22
2、Query參數
Query參數通常使用?進行傳遞,多個參數使用&分割,如:http://127.0.0.1:8888/date/receiveParamOfQuery?bothDate=2023-05-22
3、請求體參數
請求體參數也是我們常用的json傳參
那么為什么要回顧傳參方式呢,難道說傳參方式不同,接收日期參數的方式也不一樣嗎?是的沒錯
下面步入正文。
springboot接收日期類型參數
如果使用Get請求,直接使用對象接收,則可以使用@DateTimeFormat注解進行格式化,如:
@DateTimeFormat(pattern = "yyyy-MM-dd") private Date startBuyDate;
如果使用Post請求,@RequestBody接收請求體參數,默認解析日期格式為yyyy-MM-dd HH:mm:ss , 如果需要接收其他格式的參數,則可以使用@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;
擴展:
springboot項目接收一個日期類型參數
1. 在Controller的方法參數中使用@RequestParam注解接收日期參數,可以通過指定日期格式實現,例如:
@GetMapping("/api/date") public String getDate(@RequestParam("date") @DateTimeFormat(pattern = "yyyy-MM-dd") Date date) { // ... } 2.使用@PathVariable注解接收日期參數,例如
@GetMapping("/api/date/{date}")
public String getDate(@PathVariable("date") @DateTimeFormat(pattern = "yyyy-MM-dd") Date date) {
// ...
} 3. 在請求體中發(fā)送JSON格式的數據,并使用@RequestBody注解接收日期類型的字段,例如:
@PostMapping("/api/date")
public String getDate(@RequestBody RequestBodyDto requestBodyDto) {
Date date = requestBodyDto.getDate();
// ...
} 其中,RequestBodyDto為請求體對應的Java對象,可以使用@JsonFormat注解指定日期格式,例如:
public class RequestBodyDto {
@JsonFormat(pattern = "yyyy-MM-dd")
private Date date;
// getter/setter
}無論使用哪種方式接收日期參數,都需要注意指定日期格式,以避免類型轉換錯誤和日期格式化異常。
到此這篇關于springboot接收日期類型參數的文章就介紹到這了,更多相關springboot日期類型參數內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
mybatis?collection和association的區(qū)別解析
這篇文章主要介紹了mybatis?collection解析以及和association的區(qū)別,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-07-07
解決swaggerUI頁面沒有顯示Controller方法的坑
這篇文章主要介紹了解決swaggerUI頁面沒有顯示Controller方法的坑,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-06-06

