Java 前后端時間格式轉換

在 Web 開發里,時間格式處理既常見又關鍵。由于前端和后端對時間的表示、處理方式存在差異,熟練掌握時間格式的轉換方法就顯得尤為重要。這篇文章會深入探討 Java 前后端時間格式轉換的相關知識,特別是 Java 時間轉換的多種方式,其中包含注解的使用。

常見的時間格式

在開始轉換之前,我們先來了解一下常見的時間格式。

前端常見時間格式

在前端,常用的時間格式有YYYY-MM-DD(日期)、YYYY-MM-DD HH:mm:ss(日期和時間)等。例如2025-02-22、2025-02-22 12:30:00、02/22/2025 。

后端常見時間格式

在 Java 后端,常用的時間類有java.util.Date、java.time.LocalDate、java.time.LocalDateTime等。java.util.Date本身沒有特定的顯示格式,需要通過SimpleDateFormat或DateTimeFormatter來格式化顯示 。java.time包下的類則更加方便,例如LocalDate表示日期,格式為YYYY-MM-DD,LocalDateTime表示日期和時間,格式為YYYY-MM-DD HH:mm:ss。

Java 后端時間格式轉換方式

使用 SimpleDateFormat 進行轉換(Java 8 之前)

SimpleDateFormat是 Java 中用于格式化和解析日期的類。

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;public class DateFormatExample {public static void main(String[] args) {// 格式化日期SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");Date now = new Date();String formattedDate = sdf.format(now);System.out.println("格式化后的日期: " + formattedDate);// 解析日期String dateStr = "2025-02-22 12:30:00";try {Date parsedDate = sdf.parse(dateStr);System.out.println("解析后的日期: " + parsedDate);} catch (ParseException e) {e.printStackTrace();}}
}

但SimpleDateFormat不是線程安全的,在多線程環境下使用可能會出現問題。

使用 DateTimeFormatter 進行轉換(Java 8 及之后)

DateTimeFormatter是 Java 8 引入的新的日期時間格式化類,它更加線程安全和靈活。

import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;public class DateTimeFormatterExample {public static void main(String[] args) {// 格式化日期時間DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");LocalDateTime now = LocalDateTime.now();String formattedDateTime = now.format(formatter);System.out.println("格式化后的日期時間: " + formattedDateTime);// 解析日期時間String dateTimeStr = "2025-02-22 12:30:00";LocalDateTime parsedDateTime = LocalDateTime.parse(dateTimeStr, formatter);System.out.println("解析后的日期時間: " + parsedDateTime);}
}

使用注解進行時間格式轉換

在 Spring Boot 應用中,我們可以利用注解簡化時間格式的處理。

  1. @JsonFormat 注解:用于在 Java 對象與 JSON 數據相互轉換時格式化日期時間。假設我們有一個包含日期時間字段的實體類:

    import com.fasterxml.jackson.annotation.JsonFormat;
    import java.time.LocalDateTime;public class Order {private Long id;// 將LocalDateTime格式化為指定格式的字符串用于JSON輸出@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")private LocalDateTime orderTime;// 省略getter和setter方法
    }

    在上述代碼中,@JsonFormat注解標記在orderTime字段上,指定了輸出到 JSON 時的格式為yyyy-MM-dd HH:mm:ss,并且設置了時區為東八區。這樣,當我們將Order對象轉換為 JSON 字符串時,orderTime字段會按照指定格式進行格式化。

  2. @DateTimeFormat 注解:主要用于將前端傳遞過來的字符串參數解析為日期時間類型。例如在 Controller 層接收前端傳遞的時間參數:
import org.springframework.format.annotation.DateTimeFormat;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;import java.time.LocalDateTime;@RestController
public class TimeController {@PostMapping("/processTime")public String processTime(// 將前端傳遞的字符串按指定格式解析為LocalDateTime@RequestParam @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") LocalDateTime time) {return "接收到的時間: " + time;}
}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/70467.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/70467.shtml
英文地址,請注明出處:http://en.pswp.cn/web/70467.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

MySQL要點總結一

大綱 一.InnoDB的內存結構和更新機制 二.InnoDB的存儲模型 三.并發事務原理 四.索引原理和索引優化 一.InnoDB的內存模型 1.SQL的執行流程 2.InnoDB的內存模型 3.Buffer Pool中的空閑緩存頁與free鏈表 4.Buffer Pool中的臟頁和flush鏈表 5.Buffer Pool通過LRU鏈表來淘…

常用網絡工具分析(ping,tcpdump等)

寫在前面 本文看下常用網絡工具。 1:ping 1.1:用途 用于檢驗網絡的連通性。 1.2:實戰 在Linux環境中執行:ping www.sina.com.cn: [rootlocalhost ~]# ping www.sina.com.cn PING spool.grid.sinaedge.com (111.…

基于Flask的第七次人口普查數據分析系統的設計與實現

【Flask】基于Flask的第七次人口普查數據分析系統的設計與實現(完整系統源碼開發筆記詳細部署教程)? 目錄 一、項目簡介二、項目界面展示三、項目視頻展示 一、項目簡介 基于Flask的人口普查可視化分析系統 二、項目界面展示 登錄/注冊 首頁/詳情 …

11.Docker 之分布式倉庫 Harbor

Docker 之分布式倉庫 Harbor Docker 之分布式倉庫 Harbor1. Harbor 組成2. 安裝 Harbor Docker 之分布式倉庫 Harbor Harbor 是一個用于存儲和分發 Docker 鏡像的企業級 Registry 服務器,由 VMware 開源,其通過添加一些企業必需的功能特性,例…

Zookeeper應用案例-分布式鎖-實現思路

以下是具體實現代碼 第一步:注冊鎖節點 第二步:獲取鎖節點,如果自己是最小的節點,就獲取權限 第三步:拿到鎖就開始自己的業務邏輯 第四步:業務邏輯好了就要釋放這把鎖 第五步:重新注冊監聽&…

Elasticsearch7.1.1 配置密碼和SSL證書

生成SSL證書 ./elasticsearch-certutil ca -out config/certs/elastic-certificates.p12 -pass 我這里沒有設置ssl證書密碼,如果需要設置密碼,需要再配置給elasticsearch 在之前的步驟中,如果我們對elastic-certificates.p12 文件配置了密碼…

Linux(ubuntu) GPU CUDA 構建Docker鏡像

一、創建Dockerfile FROM ubuntu:20.04#非交互式,以快速運行自動化任務或腳本,無需圖形界面 ENV DEBIAN_FRONTENDnoninteractive# 安裝基礎工具 RUN apt-get update && apt-get install -y \curl \wget \git \build-essential \software-proper…

藍橋杯——lcd顯示

一:復制文件 從官方參考文件中復制相關文件,Src中的lcd.c,Inc中的lcd.h,fonts.h復制到自己創建的文件中 二:lcd初始化 在lcd.h中找到四個初始化函數,將其寫到main文件中 三:寫lcd顯示函數 在…

【C++游戲開發-五子棋】

使用C開發五子棋游戲的詳細實現方案,涵蓋核心邏輯、界面設計和AI對戰功能: 1. 項目結構 FiveChess/ ├── include/ │ ├── Board.h // 棋盤類 │ ├── Player.h // 玩家類 │ ├── AI.h // AI類 │ └── Game.h // 游戲主邏輯 ├── src/ …

中興G7615AV5

參考文獻: G7615AV5 光貓新版固件通過修改備份配置文件固化Telnet 中興7615AV5光貓配置指南 前言:(不如咸魚30遠程全權搞定,花小錢辦大事)截至2025年2月22號,這個設備開啟Telnet只能去咸魚找別人遠程開&…

常用設計模式(embeded Qt)

常用設計模式: 觀察者模式(Observer Pattern) 應用場景:傳感器數據更新、UI狀態同步。實現方式:通過QT的信號槽機制(本質是發布-訂閱模式)自動實現。例如:connect(sensor, &Sens…

侯捷 C++ 課程學習筆記:內存管理與工具應用

一、課程基礎要求 首先強調了學習前應具備的基礎知識。這些基礎知識對于理解 C 的核心概念和編程技巧至關重要。 動態內存分配與使用: 理解動態內存分配的概念,掌握 new 和 delete 操作符的使用。 能夠動態分配和管理內存,避免內存泄漏和非…

python: SQLAlchemy (ORM) Simple example using SQLite

領域層(Domain Laye):定義了 School 實體類和 SchoolRepository 抽象基類,明確了業務實體和數據訪問的契約。 基礎設施層(Infrastructure Laye):通過 SQLAlchemy 實現了 SchoolRepository 類&am…

fastadmin實現海報批量生成、郵件批量發送

記錄一個海報批量生成、郵件批量發送功能開發,業務場景如下: 國外客戶做觀展預登記,工作人員通過后臺,批量給這些觀眾生成入場證件并發送到觀眾登記的郵箱,以方便觀眾入場時快速進場。證件信息包含入場二維碼、姓名&a…

solidity之Foundry安裝配置(一)

一門面向合約的高級編程語言,主要用來編寫以太坊只能合約。 Solidity受C語言,Python和js影響,但為編譯成為以太坊虛擬機字節碼在EVM上執行,很多特性和限制都和EVM相關。 Solidity 是靜態類型語言,支持繼承、庫、自定義…

功能全面的手機壁紙應用,種類齊全、眾多高清壁紙

軟件介紹 應用亮點:今天給大家分享一款超神奇的手機應用 —— 奇幻壁紙。它作為手機動態壁紙軟件,功能超全面,操作還便捷,極具創意,能瞬間將你的手機屏幕變成奇幻世界,帶來全新視覺感受。 使用便捷性&…

使用docker配置PostgreSQL

配置docker阿里云鏡像倉庫 國內使用docker hub拉取鏡像比較慢,所以首先配置個人的鏡像倉庫。 阿里云的個人鏡像倉庫是免費的,對個人來說足夠用。 具體操作參考阿里云官方鏈接 。 關于個人鏡像倉庫的使用參考鏈接。 配置完個人鏡像倉庫后將公網配置到doc…

基于Dancing Links的精確覆蓋算法(解決NP難問題)和量子計算機模擬中的Shor算法(涉及數論與量子疊加態模擬)

一、Dancing Links算法實現數獨求解(NP難問題) 算法方案 數獨可轉化為精確覆蓋問題,使用Knuth提出的DLX算法實現高效求解。該算法通過雙向十字循環鏈表實現快速回溯,時間復雜度可達O(n^k)(k為常數) #include <iostream> #include <vector> #include <c…

Spring Boot定時任務原理

Spring Boot定時任務原理 在現代應用中&#xff0c;定時任務的調度是實現周期性操作的關鍵機制。Spring Boot 提供了強大的定時任務支持&#xff0c;通過注解驅動的方式&#xff0c;開發者可以輕松地為方法添加定時任務功能。本文將深入探討 Spring Boot 中定時任務的實現原理…

【跟我學YOLO】(1)YOLO12:以注意力為中心的物體檢測

歡迎關注『跟我學 YOLO』系列 【跟我學YOLO】&#xff08;1&#xff09;YOLO12&#xff1a;以注意力為中心的物體檢測] 0. YOLOv12 簡介0.1 YOLO12 論文下載0.2 YOLO12 的主要改進0.3 YOLO12 支持的任務和性能0.4 論文摘要 1. 背景介紹2. 相關的工作3. 方法3.1 效率分析3.2 區域…