實際專案中,根據時間搜尋,存生日,很多用到時間的.
第一: 傳時間型別的值
後台的字段型別為: date 型別
想要接收前台的時間型別資料 :
前台傳入一般有三種傳入方式 :
乙個時間物件,乙個時間戳,或者是乙個字串.
而實際上傳入到後台的時候,都是以字串的形式的形式走的.
當後台定義為date時間型別的時候,並且沒有加註解,預設的格式是這樣子的:
「2020-10-31t16:00:00.000z」 (文中雙引號被編輯器轉成了中文的符號)
這個樣子的格式才能被後台解析到,不然拋異常: httpmessagenotreadableexception
這個是因為解析引數出現錯誤,無法把傳入的引數給正確的轉化為時間格式.
如果加了註解,就可以跟前端約定格式,然後按照約定的格式傳入,是可以正常接收的.但是格式資訊必須要對應.
例如: @jsonformat(pattern = 「yyyy-mm-dd hh:mm:ss」, timezone = 「gmt+8」)這個樣子
pattern裡面是格式.可以更改為自己想要的樣子.
總的來說,就是前後端傳時間型別的值,那麼格式一定要能對應上.
第二: 返回時間型別的值 :
1: 預設返回時間戳
2: 如果加了註解,就可以解析為字串輸出出去. 而@jsonformat這個註解,出入都可以轉化為同一種格式. 這個用著就不錯.
3: 如果返回的是乙個物件的話,而時間物件只是其中乙個欄位.上面都是對的,
但是如果僅僅返回的只是乙個時間物件的話,返回的只是時間戳.
ps(重要) :
1: 使用@jsonformat時,如果前端傳入的是空字串,後端不會報錯,對應欄位會被解析為null.
不傳也不會報錯,後端依舊解析對應欄位為null.
所以如果不需要傳時間,那麼前端不傳,或者傳入空字串都是可以的.
2: 前端傳入時間戳,不會報錯,但是時間會轉化錯誤,會直接被轉化為2023年的某一天.
所以:目前最好的方式還是: 使用@jsonformat註解,約定好格式,讓前端傳入對應格式的字串.如果不需要傳值,就不傳.
如果時間型別不需要處理: 那麼直接就傳時間物件也是極好的.
oracle 時間型別處理
oracle時間型別的查詢 oracle查詢日期可以使用 但是在等號的兩邊必須資料型別一致,比如 2010 9 19 這是乙個字串不能直接與日期型別字段比較必須要進行日期轉換 日期轉換成字串 to char date,yyyy mm dd 2009 09 19 字串轉成日期 to date 2009...
時間型別的處理
今天 datetime.now.date.toshortdatestring 昨天,就是今天的日期減一 datetime.now.adddays 1 toshortdatestring 明天,同理,加一 datetime.now.adddays 1 toshortdatestring 本週 要知道本...
Oracle C 處理時間型別的Insert
首先如果直接 parm.value datetime.now insert into table thetime value parm 執行sql就會報錯 ora 01861 文字與格式字串不匹配 ado.net並沒做到oracle轉換。所以oracle不相容。解決方案 先把時間轉換為stirng ...