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 应用中,我们可以利用注解简化时间格式的处理。
- @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字段会按照指定格式进行格式化。
- @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;}
}
相关文章:
Java 前后端时间格式转换
在 Web 开发里,时间格式处理既常见又关键。由于前端和后端对时间的表示、处理方式存在差异,熟练掌握时间格式的转换方法就显得尤为重要。这篇文章会深入探讨 Java 前后端时间格式转换的相关知识,特别是 Java 时间转换的多种方式,其…...
【用deepseek和chatgpt做算法竞赛】——还得DeepSeek来 -Minimum Cost Trees_5
往期 【用deepseek和chatgpt做算法竞赛】——华为算法精英实战营第十九期-Minimum Cost Trees_0:介绍了题目和背景【用deepseek和chatgpt做算法竞赛】——华为算法精英实战营第十九期-Minimum Cost Trees_1:题目输入的格式说明,选择了邻接表…...
C++ 互斥锁的使用
mutex std::mutex 是C标准库中用于线程同步的互斥锁机制,主要用于保护共享资源,避免多个线程同时访问导致的竞态条件。 它提供了以下功能: 加锁(lock):阻塞当前线程,直到获取锁。 解锁&#…...
【Elasticsearch】Retrieve inner hits获取嵌套查询的具体的嵌套文档来源,以及父子文档的来源
Retrieve inner hits 是 Elasticsearch 中的一个功能,用于在嵌套查询或父子查询中,返回导致主文档匹配的具体嵌套对象或子/父文档的详细信息,帮助用户更直观地理解查询结果的来源。 在 Elasticsearch 中,Retrieve inner hits是一…...
C语言中的typedef关键字详解
C语言中的typedef关键字详解 在C语言编程中,typedef 关键字是一个非常实用的特性,它可以帮助我们创建新的类型名,从而简化代码,提高可读性。本文将详细解析typedef的使用方法、场景以及注意事项。 1. typedef简介 typedef 是Ty…...
怎麼利用靜態ISP住宅代理在指紋流覽器中管理社媒帳號?
靜態ISP住宅代理是一種基於真實住宅IP的代理服務。這類代理IP通常由互聯網服務提供商(ISP)分配,具有非常高的真實性,與普通數據中心代理相比,更不容易被平臺檢測到為“虛假IP”或“代理IP”,靜態ISP住宅代理…...
【多语言生态篇一】【DeepSeek×Java:Spring Boot微服务集成全栈指南 】
(手把手带你从零实现AI能力调用,万字长文预警,建议收藏实操) 一、环境准备:别输在起跑线上 1.1 硬件软件全家桶 JDK版本:必须 ≥17(Spring Boot 3.2+强制要求,低版本直接报错)IDE推荐:IntelliJ IDEA终极版(社区版缺Spring AI插件支持)构建工具:Maven 3.9+ / Grad…...
IOS UITextField 无法隐藏键盘问题
设置UITextField 键盘按钮返回键为“完成”,即return key 设置done .m代码设置代理 //设置代理协议 UITextFieldDelegate, self.mobileTextField.delegate self; ///点击完成键隐藏键盘 - (BOOL)textFieldShouldReturn:(UITextField *)textField{//取…...
einops测试
文章目录 1. einops2. code3. pytorch 1. einops einops 主要是通过爱因斯坦标记法来处理张量矩阵的库,让矩阵处理上非常简单。 conda : conda install conda-forge::einopspython: 2. code import torch import torch.nn as nn import torch.nn.functional as…...
25轻化工程研究生复试面试问题汇总 轻化工程专业知识问题很全! 轻化工程复试全流程攻略 轻化工程考研复试真题汇总
轻化工程复试心里没谱?学姐带你玩转面试准备! 是不是总觉得老师会问些刁钻问题?别焦虑!其实轻化工程复试套路就那些,看完这篇攻略直接掌握复试通关密码!文中有重点面试题可直接背~ 目录 一、这些行为赶紧避…...
小米路由器 AX3000T 降级后无法正常使用,解决办法
问题描述 买了个 AX3000T 路由器,想安装 OpenWRT 或者 安装 Clash 使用,看教程说是需要降级到 v1.0.47 版本。 结果刷机之后路由器无法打开了,一直黄灯亮,中间灭一下,又是黄灯长亮,没有 WIFI 没有连接。以…...
qt5实现表盘的旋转效果,通过提升QLabel类
因为工作需要,需要实现温度的表盘展示效果 实现思路: 通过提示声QLabel控价类,实现报盘的旋转和展示效果 1. 编写一个QLabel的类MyQLabel,实现两个方法 1. void paintEvent(QPaintEvent *event); //重绘函数 2. void valueChanged(int va…...
【HeadFirst系列之HeadFirst设计模式】第7天之命令模式:封装请求,轻松实现解耦!
命令模式:封装请求,轻松实现解耦! 大家好!今天我们来聊聊设计模式中的命令模式(Command Pattern)。如果你曾经需要将请求封装成对象,或者希望实现请求的撤销、重做等功能,那么命令模…...
HTTPS(下)
主要讲加密算法RSA,ECDHE TLS的握手涉及四次通信,根据不同的密钥交换算法,TLS 握手流程也会不一样的,现在常用的密钥交换算法有两种:RSA 算法和 ECDHE 算法 正常情况下,需要先TCP三次握手后进行TLS四次握手…...
vue2 和 vue3 中 computer 计算属性的用法
Vue 2 中的 computed 在 Vue 2 中,计算属性是响应式的,并且基于 getter 进行缓存,只有依赖的响应式数据发生变化时才会重新计算。 基本用法 <template><div><p>原始消息:{{ message }}</p><p>反…...
【STM32学习】标准库实现STM32 ADC采集1路、2路、多路
目录 ADC采集 ADC配置步骤 STM32F103C8T6的ADC 输入通道 编辑 1路ADC(A4 ADC 通道4) 1路ADC源码代码链接: 2路ADC(A4 ADC 通道4、A5 ADC 通道5)基于DMA实现 多路ADC实现采集 ADC采集 ADC配置步骤 使能GPIO…...
【STM32】外部时钟|红外反射光电开关
1.外部时钟 单片机如何对外部触发进行计数?先看一下内部时钟,内部时钟是接在APB1和APB2时钟线上的,APB1,APB2来自stm32单片机内部的脉冲信号,也叫内部时钟。我们用来定时。同样我们可以把外部的信号接入单片机,来对其…...
【语音科学计算器】当前汇率
JSON_MARKER_HORN{“base”:“USD”,“rates”:{“EUR”:0.9758,“JPY”:157.68,“GBP”:0.8190,“CNY”:7.3327,“HKD”:7.7872,“AUD”:1.6260,“CAD”:1.4422,“CHF”:0.9157,“SGD”:1.3714,“KRW”:1473.05,“NZD”:1.7992,“THB”:34.54,“MYR”:4.4930,“PHP”:57.32,“…...
PHP post 数据丢失问题
max_input_vars是PHP配置选项之一,用于设置一个请求中允许的最大输入变量数。它指定了在处理POST请求或者通过URL传递的参数时,PHP脚本能够接收和处理的最大变量数量。 max_input_vars的默认值是1000,意味着一个请求中最多可以包含1000个输入…...
【云服务器】云服务器内存不够用,开启SWAP交换分区
交换分区(Swap) 1.创建 2GB Swap 文件 sudo fallocate -l 2G /swapfile (如果 fallocate 不支持,可以用 dd 命令) sudo dd if/dev/zero of/swapfile bs1M count2048 2.设置 Swap 权限 sudo chmod 600 /swapfile…...
TrollInstallerX深度解析:iOS内核漏洞利用与系统级安装架构揭秘
TrollInstallerX深度解析:iOS内核漏洞利用与系统级安装架构揭秘 【免费下载链接】TrollInstallerX A TrollStore installer for iOS 14.0 - 16.6.1 项目地址: https://gitcode.com/gh_mirrors/tr/TrollInstallerX 在iOS 14.0至16.6.1设备上部署TrollStore面临…...
用 Playwright + Claude Code 做自动化测试:一套从0到1跑通的实战流程
最近有同学问我一个问题: “现在越来越多公司的校招测开岗开始关注 AI 使用能力,我需要准备到什么程度?” 先说一个更现实的结论: AI 使用能力正在成为加分项,但还远没到“不会就没机会”的程度。 企业更看重的&#x…...
如何快速激活Adobe创意云:Adobe-GenP 3.0终极指南
如何快速激活Adobe创意云:Adobe-GenP 3.0终极指南 【免费下载链接】Adobe-GenP Adobe CC 2019/2020/2021/2022/2023 GenP Universal Patch 3.0 项目地址: https://gitcode.com/gh_mirrors/ad/Adobe-GenP 还在为Adobe Creative Cloud高昂的订阅费用发愁吗&…...
OpenClaw开源框架:构建安全高效的AI个人助手
1. 项目概述:构建个人AI助手的必要性在数字化浪潮席卷各行各业的当下,拥有一个专属的AI助手正从科技爱好者的玩具转变为提升效率的刚需工具。OpenClaw作为新兴的开源框架,以其模块化设计和隐私保护特性,成为构建个人AI代理的理想选…...
从零构建大模型:大模型微调与对齐-SFT/RLHF 技术详解
前言大语言模型从通用预训练走向可用、好用的核心环节,是微调与对齐。预训练阶段让模型掌握语言规律与海量知识,但输出往往无序、不可控、不遵循指令;而以监督指令微调(SFT) 为起点、以人类反馈强化学习(RL…...
终极指南:如何用BilibiliCommentScraper批量获取B站完整评论数据?[特殊字符]
终极指南:如何用BilibiliCommentScraper批量获取B站完整评论数据?🚀 【免费下载链接】BilibiliCommentScraper B站视频评论爬虫 Bilibili完整爬取评论数据,包括一级评论、二级评论、昵称、用户ID、发布时间、点赞数 项目地址: h…...
生成式AI伦理测试:偏见检测——软件测试从业者的专业视角与实战指南
随着生成式人工智能在内容创作、代码生成、测试用例设计等领域的深度应用,其潜在的伦理风险,尤其是偏见问题,已成为软件测试从业者必须正视的核心挑战。偏见并非简单的功能缺陷,而是深植于数据、算法及交互过程中的系统性不公平现…...
为什么你的文章没人读?聊聊文章可读性
文章可读性不是“写得简单”就完事我以前以为,只要把字写短一点、句子弄直白点,别人就能轻松看懂我的文章。后来才发现,事情没那么简单。文章可读性其实不只是关于词汇难易或句子长短,它更像是一种“读者友好度”——你有没有站在…...
别再乱放文件了!UniAPP项目目录结构保姆级指南(附最佳实践与自建文件夹说明)
UniAPP项目目录结构优化指南:从混乱到清晰的最佳实践 刚接触UniAPP的开发者常常会陷入一个困境:随着项目规模扩大,文件越来越多,最终整个项目变成难以维护的"垃圾堆"。这种情况往往源于对目录结构理解不足和缺乏前期规划…...
GPT-SoVITS终极语音克隆指南:5分钟掌握零样本AI语音合成技术
GPT-SoVITS终极语音克隆指南:5分钟掌握零样本AI语音合成技术 【免费下载链接】GPT-SoVITS 1 min voice data can also be used to train a good TTS model! (few shot voice cloning) 项目地址: https://gitcode.com/GitHub_Trending/gp/GPT-SoVITS 你是否曾…...
