时间戳类型的字符串 {Timestamp@15601} “2021-07-14 18:56:53.0“ 变成带T的Object类型 2021-07-14T10:56:53.000+0000 处理
why
兩個(gè)平臺(tái),一個(gè)平臺(tái)直接查詢數(shù)據(jù)庫(kù),另一個(gè)平臺(tái)通過接口調(diào)用查詢數(shù)據(jù),導(dǎo)致時(shí)間戳 Timestamp 格式字符串傳輸后變 yyyy-MM-ddTHH:mm:ss.000+0000 日期格式,出現(xiàn)這種問題的可能原因是:從數(shù)據(jù)庫(kù)查詢出來的數(shù)據(jù)沒有進(jìn)行封裝,直接使用Map<String, Object>類型保存,導(dǎo)致值類型信息丟失,這是我調(diào)試過程中獲取的時(shí)間字段TME的值:
code
# 最初獲取到的格式【當(dāng)然也是最終需要的格式】 TME -> {Timestamp@15601} "2021-07-14 18:56:53.0" # 經(jīng)過接口傳輸后變成了時(shí)間格式 TME -> 2021-07-14T10:56:53.000+0000 /*** 將帶T的時(shí)間字符串轉(zhuǎn)換為時(shí)間戳** @param rowList 帶轉(zhuǎn)換列表* @return*/private List<Map<String, Object>> formatTimePattern(List<Map<String, Object>> rowList) {String timeField = "TME";rowList.forEach(rowMap->{rowMap.forEach((key,val)->{if(timeField.equalsIgnoreCase(key)){SimpleDateFormat from = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss");Date fromParse = null;try {fromParse = from.parse(val.toString());} catch (ParseException e) {e.printStackTrace();}assert fromParse != null;Timestamp timestamp = new Timestamp(fromParse.getTime());// 用時(shí)間戳覆蓋之前的時(shí)間字符串rowMap.put(key,timestamp);}});});return rowList;}總結(jié)
時(shí)間字段的格式是一個(gè)令人頭疼的問題,前后端和數(shù)據(jù)庫(kù)有可能存放著三種不同類型的時(shí)間值。統(tǒng)一使用字符串類型有利于數(shù)據(jù)的存取展示,但是對(duì)數(shù)值的操作就不方便了,很多時(shí)候來回轉(zhuǎn)換時(shí)間字段值的格式就讓人奔潰落淚 😭 解決的辦法是封裝,讓框架接管時(shí)間字段值的格式化任務(wù)。
總結(jié)
以上是生活随笔為你收集整理的时间戳类型的字符串 {Timestamp@15601} “2021-07-14 18:56:53.0“ 变成带T的Object类型 2021-07-14T10:56:53.000+0000 处理的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【Java代码】Lamda表达式将Lis
- 下一篇: 【CSDN】【从800+CSDN支持的E