時間型別處理

2021-10-25 11:20:04 字數 1103 閱讀 1718

實際專案中,根據時間搜尋,存生日,很多用到時間的.

第一: 傳時間型別的值

後台的字段型別為: 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 ...