卖逼视频免费看片|狼人就干网中文字慕|成人av影院导航|人妻少妇精品无码专区二区妖婧|亚洲丝袜视频玖玖|一区二区免费中文|日本高清无码一区|国产91无码小说|国产黄片子视频91sese日韩|免费高清无码成人网站入口

解決Vue ElementUI Springboot日期時(shí)間時(shí)區(qū)問題

最近我在一個(gè)項(xiàng)目中選擇了Vue ElementUI作為前端框架,后端使用了Springboot和MSSQL。在開發(fā)過程中,遇到了一個(gè)問題:前端日期范圍控件傳入后端的時(shí)間是UTC時(shí)間,與我們所在的東八區(qū)

最近我在一個(gè)項(xiàng)目中選擇了Vue ElementUI作為前端框架,后端使用了Springboot和MSSQL。在開發(fā)過程中,遇到了一個(gè)問題:前端日期范圍控件傳入后端的時(shí)間是UTC時(shí)間,與我們所在的東八區(qū)相差8個(gè)小時(shí)。今天我來分享一下我是如何解決這個(gè)問題的,希望對(duì)大家有所幫助。

問題描述

當(dāng)我點(diǎn)擊日期控件并選擇日期范圍后,然后進(jìn)行搜索操作,通過F12查看網(wǎng)絡(luò)請(qǐng)求時(shí),我發(fā)現(xiàn)控件自動(dòng)將日期修改為UTC時(shí)間。而我們所在的東八區(qū)與UTC時(shí)間恰好相差8個(gè)小時(shí)。

前端代碼

我的前端代碼如圖所示,日期范圍被封裝在一個(gè)數(shù)組`complainPeriod`中,并沒有特殊處理。

后端處理

通過調(diào)用后端接口時(shí),也沒有添加其他特殊處理。在Springboot的REST接口中,我將`complainPeriod`接收為一個(gè)字符串?dāng)?shù)組,然后通過格式轉(zhuǎn)換為`LocalDateTime`類型,再傳入SQL查詢語句的`between and`條件中。

問題分析

在這里出現(xiàn)的問題是,`LocalDateTime`本身是沒有時(shí)區(qū)信息的,所以即使使用``來解析帶時(shí)區(qū)格式的日期時(shí)間,它也不會(huì)自動(dòng)轉(zhuǎn)換時(shí)區(qū)。

而我的數(shù)據(jù)庫(kù)中相關(guān)時(shí)間字段是通過`()`來設(shè)置的,沒有設(shè)置時(shí)區(qū)信息,即使用的是當(dāng)前我們所在的東八區(qū)時(shí)間。

解決方法

為了解決這個(gè)問題,我們需要使用`ZonedDateTime`來接收字符串,并將其轉(zhuǎn)換為東八區(qū)的`LocalDateTime`,然后再傳入SQL查詢語句中進(jìn)行查詢。

參考下圖,我給出兩種解決方法,都可以實(shí)現(xiàn)目的。但是我更推薦第二種方法,因?yàn)樗雍?jiǎn)潔。

通過以上的處理方法,我成功解決了Vue ElementUI Springboot日期時(shí)間時(shí)區(qū)問題。希望對(duì)大家有所幫助!如果喜歡,請(qǐng)記得點(diǎn)贊和分享哦!

標(biāo)簽: