欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

SpringBoot解析LocalDateTime失敗:Uniapp傳輸時間變1970的原因與解決方案

 更新時間:2025年03月10日 09:19:12   作者:碼農研究僧  
這篇文章主要介紹了SpringBoot解析LocalDateTime失敗?Uniapp傳輸時間變1970的原因與解決方案,文中通過代碼示例給大家講解的非常詳細,需要的朋友可以參考下

前言

最初的數(shù)據(jù)格式如下:

具體邏輯是通過前端展示給用戶看,后續(xù)將其數(shù)值帶到后端,進行添加,最后以LocalDateTime格式

但發(fā)現(xiàn)數(shù)據(jù)一直都是1970:

1. 問題分析

在 Uniapp 前端傳輸 yyyy-MM-dd HH:mm:ss 格式的時間到 Spring Boot 后端時,默認 LocalDateTime 解析失敗,導致變成 1970-01-01 08:00:00

問題分析:為什么時間變成 1970?

1.1 Uniapp 傳輸?shù)臅r間

前端 dayjs 處理時間:inGatTime: dayjs(this.itemData.inGatTime).format('YYYY-MM-DD HH:mm:ss'),

傳輸?shù)胶蠖说?JSON:

{
  "inGatTime": "2025-03-09 19:10:05"
}

這是一個 字符串,而不是 LocalDateTime!

1.2 Spring Boot 默認的 LocalDateTime 解析

如果后端 LocalDateTime 僅僅加了 @JsonFormat 和 @DateTimeFormat:

@Schema(description = "時間")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime inGatTime;

問題:

  • @JsonFormat 僅用于序列化(返回數(shù)據(jù)給前端),不會影響 反序列化(接收前端傳輸?shù)臄?shù)據(jù))
  • @DateTimeFormat 只對 Spring MVC 的 URL 參數(shù)解析 有效,對 @RequestBody 傳輸?shù)?JSON 無效

結果是,Spring Boot 無法正確解析 yyyy-MM-dd HH:mm:ss,導致 LocalDateTime 變成 1970-01-01 08:00:00(默認 UNIX 時間戳起點)

但是,加上 @JsonDeserialize(using = LocalDateTimeDeserializer.class) 和 @JsonSerialize(using = LocalDateTimeSerializer.class) 之后,Spring Boot 才能正確解析時間

為什么???

2. 使用 @JsonDeserialize & @JsonSerialize(推薦)

import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateTimeSerializer;
import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateTimeDeserializer;
import java.time.LocalDateTime;

@Schema(description = "進閘時間")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai")
@JsonDeserialize(using = LocalDateTimeDeserializer.class) // 反序列化
@JsonSerialize(using = LocalDateTimeSerializer.class) // 序列化
private LocalDateTime inGatTime;
  • @JsonDeserialize(using = LocalDateTimeDeserializer.class)
    告訴 Jackson 解析 yyyy-MM-dd HH:mm:ss 格式的字符串為 LocalDateTime
  • @JsonSerialize(using = LocalDateTimeSerializer.class)
    讓 LocalDateTime 按 yyyy-MM-dd HH:mm:ss 格式返回 JSON

這個方案最穩(wěn)定,推薦使用!

3. 前端傳 ISO-8601 格式(不推薦,可嘗試)

spring Boot 默認支持 ISO-8601 格式(YYYY-MM-DDTHH:mm:ss),前端這樣修改:

inGatTime: dayjs(this.itemData.inGatTime).format('YYYY-MM-DDTHH:mm:ss'),

傳輸數(shù)據(jù):

{
  "inGatTime": "2025-03-09T19:10:05"
}

后端 LocalDateTime 可以直接解析:

@Schema(description = "進閘時間")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai")
private LocalDateTime inGatTime;

但這樣 LocalDateTime 變成 T 分隔格式,前端接收時要自己處理!

但 我的后端保存到數(shù)據(jù)還是1970!

4. 用 String(中立)

這個要改字段類型,保持中立,看自身代碼好不好修改!

如果 Jackson 解析仍然失敗,可以 先用 String 接收,再手動轉換 LocalDateTime:

@Schema(description = "進閘時間")
private String inGatTime; // 先接收為字符串

然后在 Service 里轉換:

import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;

DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
LocalDateTime parsedTime = LocalDateTime.parse(createReqVO.getInGatTime(), formatter);

適用于 Jackson 反序列化無效的情況!

以上就是SpringBoot解析LocalDateTime失???Uniapp傳輸時間變1970的原因與解決方案的詳細內容,更多關于SpringBoot解析LocalDateTime失敗的資料請關注腳本之家其它相關文章!

相關文章

  • SpringDataJpa寫原生sql遇到的問題及解決

    SpringDataJpa寫原生sql遇到的問題及解決

    這篇文章主要介紹了SpringDataJpa寫原生sql遇到的問題及解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-11-11
  • Spring Security OAuth2認證授權示例詳解

    Spring Security OAuth2認證授權示例詳解

    這篇文章主要介紹了Spring Security OAuth2認證授權示例詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-09-09
  • java實現(xiàn)系統(tǒng)多級文件夾復制

    java實現(xiàn)系統(tǒng)多級文件夾復制

    這篇文章主要為大家詳細介紹了java實現(xiàn)系統(tǒng)多級文件夾復制,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-08-08
  • 利用Spring Boot如何開發(fā)REST服務詳解

    利用Spring Boot如何開發(fā)REST服務詳解

    這篇文章主要給大家介紹了關于利用Spring Boot如何開發(fā)REST服務的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧。
    2017-12-12
  • SpringMVC post請求的處理

    SpringMVC post請求的處理

    今天小編就為大家分享一篇解決SpringMVC接收不到ajaxPOST參數(shù)的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-07-07
  • java實現(xiàn)用戶自動登錄

    java實現(xiàn)用戶自動登錄

    這篇文章主要為大家詳細介紹了java用戶自動登錄的實現(xiàn)方法,分為六個步驟實現(xiàn)用戶自動登錄,并驗證用戶是否已經(jīng)登錄,感興趣的小伙伴們可以參考一下
    2016-03-03
  • springboot中請求地址轉發(fā)的兩種方案

    springboot中請求地址轉發(fā)的兩種方案

    在開發(fā)過程中,我們經(jīng)常需要將請求從一個服務轉發(fā)到另一個服務,以實現(xiàn)不同服務之間的協(xié)作,本文主要介紹了springboot中請求地址轉發(fā)的兩種方案,感興趣的可以了解一下
    2023-11-11
  • 使用Java實現(xiàn)壓縮文件夾并打包下載

    使用Java實現(xiàn)壓縮文件夾并打包下載

    這篇文章主要為大家詳細介紹了如何使用Java實現(xiàn)壓縮文件夾并打包下載,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學習一下
    2024-03-03
  • 深入解析Java中的JDBC事務

    深入解析Java中的JDBC事務

    這篇文章主要介紹了深入解析Java中的JDBC事務,包含了Java多線程的事務并發(fā)等知識,需要的朋友可以參考下
    2015-08-08
  • Java面向對象之猜拳游戲

    Java面向對象之猜拳游戲

    這篇文章主要為大家詳細介紹了Java面向對象之猜拳游戲,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-05-05

最新評論