关于前后端时间(LocalDateTime)对接问题

pycharm添加Anaconda解释器显示不出来 因为我之前下载的是pycharm最新版本2024.1的,所以我抱着试一试的心态卸载重装了2021.3.3的,创建新文件的时候立刻就自己识别好了conda环境。就是图中画圈的地方,之前一直显示为python的图标,但是再Python Interpreter后面跟的路径确实是我下载anaconda的地方。另外一种方法就是使用Virtualenv Environment方式配置,但是我的pycharm还是没有识别出conda的图标。首先是这位的方法,先添加系统解释器,再重启,但是我的图标还是python。 阅读详情
AI摘要

本文探讨了JsonFormat和DateTimeFormat注解在时间格式转换中的注意事项,重点讲解了常见的日期时间格式、数据库选择、以及如何确保前后端请求的兼容性,特别是针对LocalDateTime和bigint的处理建议。

首先时间格式很多

具体有多少种 可参考:cn.hutool.core.date.DatePattern hutool工具类定义的常量

两个注解的注意事项


  // 前端  -> 后端时间处理。  请求体传 2021-10-26 15:12:49 。不可传:2021-10-26T15:12:49 。请求头不可以
        @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private LocalDateTime startTime;
    
 // 前端  -> 后端时间处理。请求头可以,请求体不可以 (意思指:json入参)
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") 
     private LocalDateTime startTime;

我测试的时候,心情异常复杂。你说两个注解,在闹呢?

常见格式

// yyyy-MM-dd HH:mm:ss    2021-09-08 21:21:36
// yyyy-MM-dd'T'HH:mm:ss  2021-09-08T21:21:36
// EEE MMM dd HH:mm:ss zzz yyyy   jdk   Wed Sep 08 21:21:36 CST 2021

一般数据库是 dateTime或者bigint(个人更加推荐使用bigint),不管用什么样的,最重要的是统一!统一!统一!

若mysql使用 DateTime java可能用LocalDateTime(2021-09-08T21:21:36) 去接,
1-前端传参:2021-09-08T21:21:36
2-前端传参 :2021-09-08 21:21:36 对应dto字段上使用

// import com.fasterxml.jackson.annotation.JsonFormat;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")

若是bigint可以写个统一转换过滤器,或者写个工具类等等吧

测试

入参是:

// 2021-09-16T09:24:20.620Z  可以
// 2021-09-16T09:24:20  可以 
// 2021-09-16 09:24:20  不可以  抛出 JSON parse error: Cannot deserialize value of type `java.time.LocalDateTime` from String "2021-09-16 09:24:20": Failed to deserialize java.time.LocalDateTime
private LocalDateTime createTime;


// 加上 
// import com.fasterxml.jackson.annotation.JsonFormat;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime createTime;

// 2021-09-16 09:24:20  可以
// 2021-09-16T09:24:20.620Z 不可以
// 2021-09-16T09:24:20  不可以




总结

vo处理

import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;

import java.time.LocalDateTime;

@Data
public class TestTimeVo {
     // 后台  -> 前台 时间格式处理
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
     private LocalDateTime startTime;
}

前端展示

{
  "startTime": "2021-10-26 15:18:43"
}

DTO 处理

@Data
public class TimeDTo {
    // 前端  -> 后端时间处理。  请求体传 2021-10-26 15:12:49 不可传:2021-10-26T15:12:49 请求头不可以
        @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private LocalDateTime startTime;
}

前端入参:

{
  "startTime": "2021-10-26 15:18:43"
}
STM32F103多通道PWM输出避坑指南:TIM1_CH1异常输出的解决方案 本文深入解析STM32F103多通道PWM输出中的TIM1_CH1异常问题,提供从时钟配置到GPIO复用的系统化解决方案。通过黄金法则配置流程和高级调试技巧,帮助开发者快速定位并解决PWM输出不稳定、占空比异常等问题,同时拓展多定时器协同和互补PWM等高级应用场景。 阅读详情

相关推荐

基于ThingsBoard+ESP8266的MQTT远程控制实战:从设备接入到仪表盘交互

本文详细介绍了基于开源物联网平台ThingsBoard与ESP8266开发板,通过MQTT协议实现远程控制的完整实战流程。从环境搭建、设备创建、仪表盘设计到核心代码编写与联调,手把手指导完成从云端到硬端的物联网闭环,为智能家居与物联网原型开发提供低成本、高效率的解决方案。

weixin_29192365的博客 330

Java后端接收时间字符串转成LocalDateTime,LocalDateTime转成时间字符串给前端

1.接收前端时间字符串 1.1后端可以使用String去接收,手动在代码中进行转换成LocalDateTime操作,这里不做讨论。 1.2后端使用LocalDateTime去接收,需要配合注解: @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") 1.2.1例子: 1.2.1.1前端请求的数据 import io.swagger.annotations.ApiModelProperty; import java.time.LocalDateTim

小林子的博客 8257

绕过ROS2!在RDK X5上直接用Python调用海康相机C++ SDK的避坑指南

本文详细介绍了在RDK X5上绕过ROS2,直接使用Python调用海康相机C++ SDK的轻量化方案。通过Cython构建Python绑定,提取海康相机SDK核心组件,实现高效图像采集。文章涵盖环境准备、Cython接口设计、编译系统配置及性能优化技巧,特别适合ARM64平台开发者。

weixin_33712987的博客 248

前端发送当前时间作为参数,后端用LocalDateTime进行接收前端使用Date出现格式不统一情况

前后端LocalDateTime的传递规则

m0_52542347的博客 2052

手把手教你用ES8311芯片搞定智能音箱TTS播放(附完整寄存器配置清单)

本文详细介绍了如何使用ES8311音频编解码芯片实现智能音箱TTS播放功能,包括芯片特性、硬件连接、寄存器配置及调试技巧。通过完整的寄存器配置清单和实战经验,帮助开发者快速掌握ES8311在智能音箱中的应用,优化音频输出质量和低功耗设计。

weixin_42567497的博客 556

AI Agent在营销领域的实战策略

本文从第一性原理出发,系统性拆解AI Agent在营销领域的落地逻辑、技术架构、实现方案与实战策略。全文覆盖从基础概念到高级优化的全层级知识:底层理论层面推导营销Agent的效用函数与决策框架;技术架构层面提出"感知-记忆-规划-行动-反思"五组件可落地架构;实践层面提供生产级代码实现、多行业案例与ROI提升方法论;前沿层面探讨多Agent协同、世界模型仿真等下一代技术方向。

操作系统内核探秘的博客 227

前后端时间使用LocalDateTime来传时间

LocalDateTime 默认的时间格式是: yyyy-MM-ddTHH:mm:ss,中间多了一个 T 字,这时候因为上边说的T的问题,前端传过来的肯定是带T的格式,现在后端需要设置一个配置类就可以解决。* 但是对于往常的数据来说是没有 T 字的,这就会造成后端在接受或返回时间数据的时候出现异常,现在已经把T去掉了 ,这样就可以把这个转化的string属性设置到对象中传输给前端。输出:2023-04-16 15:45:27。下边的两点本质都是基于修改这个传输的T。1.后端向前端传输时间。

qq_55578844的博客 3441

本届挑战赛亚军方案:基于大模型和多AGENT协同的运维

我们分别构建了异常检测基础模型,一旦系统接受到异常即会通知LLM主管Agent,主管Agent对异常问题进行决策与子领域Agent进行桥接,多个子领域Agent协同工作,实现运维故障自动诊断和多个任务模型的编排,提升运维效率。

weixin_52705010的博客 2292

Spring Boot 别再用 Date 作为入参了,LocalDateTime、LocalDate 真香!

如果是RequestBody,那么通过配置ObjectMapper(这个玩意儿会注入到Jackson的HttpMessagConverter里面,即中)来实现Json格式数据的序列化和反序列化;如果是RequestParam或者PathVariable类型的参数,通过配置Converter实现参数转换(这些Converter会注入到ConversionService中)。1.1,000+ 道 Java面试题及答案整理(2022最新版)2.劲爆!Java 协程要来了。。。3.

Java技术栈,分享最主流的Java技术 726

OpenClaw 子代理配对失败问题分析与解决方案

OpenClaw子代理配对失败问题分析与解决方案 问题核心在于agent设备权限不足,仅有operator.approvals权限而缺少operator.admin权限,导致子代理启动时形成权限死锁。本文提供三种解决方案: 直接编辑设备配对文件(推荐):修改本地JSON文件,为agent设备添加完整operator.admin权限,操作简单快捷。 标准重新配对流程:删除现有agent设备后重新配对,通过正常审批流程获取完整权限,符合系统安全设计。 修改源码降低权限要求(仅限开发环境):调整子代理代码避免强制

多媒体编程、网络编程、系统编程、网络安全编程、驱动编程 148

数字信号处理----数字上变频和下变频都FPGA实现

** 数字信号处理基础----信号下变频和解调 一、 任务介绍 数字上变频器(DUC)和数字下变频器(DDC)广泛应用于通信系统,用于信号采样速率的转换。当信号从基带转换至中频( IF )带,需要使用数字上变频器。而数字下变频器是用于将信号从中频( IF )带转换为基带。DUC和DDC通常包括使用混频器进行频率转换,此外还有采样率转换。DUC或DDC的结构主要取决于所需要的转换率。例如,WiMAX (全球互通微波接入)系统典型的转换率为8—10阶。对于如此低的转换率,DUC和DDC只需采用FIR滤波器架构。

Born_toward的博客 3万+

使用LocalDateTime处理时间与前端和数据库的无缝对接

一、简介 通常与前端互相传递时间相关参数,一般为String或Date 类型,而DTO中一般用LocalDateTime处理,这样会发生多次时间格式或类型转换,产生冗余代码。故可以通过全局AOP实现前端所传String类型时间自动映射转化为LocalDateTime类型,后端处理后也自动映射LocalDateTime为String 返回前段。 其中对于PostgreSQL数...

vellerzheng的博客 2万+

2024美团秋招硬件开发笔试真题及答案解析

在 Linux 内核的网络设备驱动中,数据链路层的功能通常由网络协议栈的低层(如以太网驱动)实现,而不是作为网络设备驱动的一个独立层次。在 FreeRTOS 中,任务通知(Task Notifications)是一种轻量级的事件传递机制,用于在任务之间或任务与中断之间传递信号。小美正在开发一个简单的密码生成器,其中一个功能是将输入的字符串中的所有字母按字母顺序循环前移一位(即 'a' 变为 'z','B' 变为 'A',以此类推)。它包含了网络设备的各种参数和方法,用于管理网络设备的初始化、配置和操作。

XU157303764的博客 1675

date,LocalDateTime区别,涉及前后端的时间转换传值

获取请求时,如果前端采用直接将时间选择器提供的输入值提交给接口,若格式如time=2025-07-15T16%3A00%3A00.000Z,则为ISO格式,此时接口参数类型无论为date或LocalDateTime都无法直接解析。进行前后端对接的过程中,涉及时间的转化及数据库查询时常会出现格式不一致等问题,比如前端传回一个ISO格式的date类型,结果后端同样都是date类型,却无法识别,这种情况就需要进行定义或转换。这里额外提一下date类的实体类注解格式转换,但是不能赋值为ISO格式的时间值。

m0_74022984的博客 563

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

LocalDateTime反序列化,LocalDateTime格式化

使用mybatis-plus的时候出现了LocalDateTime类(jdk8 中新出现的类 那么我在反序列化的时候出了问题。 我在springboot 2.1.3 中使用以下类结局问题) 用到了下面这个类解决了所有的问题。包括前端传值过来也能直接接受字符串 百度上面也猜了许许多多的坑 最终换了一个spring boot的版本 然后用以下的代码配置完美解决了问题 import com.fa...

weixin_33743703的博客 733

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

SpringBoot 配置返回前端时间戳和接收时间戳自动转为LocalDateTime(前后端统一使用时间戳交互)

背景 在项目开发当中,前后端使用什么样的时间格式,是一个值得关注的问题。如果都各自使用自己的格式,那么很不好统一。 确定时间格式 1.确定后端返回前端时间格式 前端一般来说对于时间的处理是富有变化的。有的地方可能使用 “2020-11-29 11:15:25” 这样的格式,也可能使用 “2020/11/29 11:15” 的格式,或者只需要显示到分,不需要显示到秒。如果是这样的话,后端返回给前端字符串类型的时间格式是不友好的,前端不好做到兼容性。 对于时间的兼容性,后端可以给前端返回时间戳,时间戳可以做到任

Duktig的博客 1万+

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

LocalDateTime在项目中的使用(LocalDateTime对接前端通过时间戳互转、LocalDateTime对接数据库)

LocalDateTime 在项目中的使用 文章目录LocalDateTime 在项目中的使用1. 博客编写背景2. LocalDateTime 前端交互2.1 LocalDateTime 向前端写入时间戳2.1.1 `fastJson` 默认的写入格式2.1.2 更改`fastJson` 写入格式,让其回写时间戳 (结论★★★)2.2 接受前端传递的时间戳为 LocalDateTimme2.2....

吃茫茫的博客 9207

LocalDateTime在项目中的使用(LocalDateTime对接前端通过时间戳互转、LocalDateTime对接数据库) 目录

实现的效果如下: 前端传递时间戳 { “localDateTime”: 1584700466000 } 后端返回时间戳 { “code”: “0”, “desc”: “请求成功”, “data”: { “localDateTime”: 1584700466000 } } ======================================================== LocalD...

weixin_45120972的博客 4551

localdatetime获得时间搓_LocalDateTime在项目中的使用(LocalDateTime对接前端通过时间戳互转、LocalDateTime对接数据库)...

1. 博客编写背景本文章的编写背景:由于在 JDK 8 中,Date、Timestamp 对象已经不推荐使用,所以在公司的新项目上,我计划将 LocalDateTime 使用在新项目中。由于本人所在项目组,统一的前后端时间的交互方式为时间戳,而时间戳并不能直接被fastJson 或 jackson 直接转换,所以踩了不少的坑,个人建议有耐心的看完。实现的效果如下:前端传递时间戳{"localDat...

weixin_31430653的博客 1266

LocalDate,LocalDateTime,Date及时间戳的转换

1.时间戳装LocalDateTime,时间戳如果是字符串则先转为long LocalDateTime localDateTime = LocalDateTime.ofEpochSecond(System.currentTimeMillis()/1000, 0, ZoneOffset.ofHours(8)); 2.Date转LocalDate Date date = new Date(); LocalDate localDate = date.toInstant().atZone(ZoneOffset.of

u013078871的博客 2万+

解决实体类中localDatetime字段,不能返回时间戳问题

众所周知,java中,date这个类对日期等操作很繁琐。jdk8之后,出现了localDatetime这个类,对我们操作时间相关的方法提供了很大的便利。 我们知道,前后端传输日期类数据时,通常是以时间戳也就是毫秒值来传输的,但是对localDatetime这个类型的字段缺无法直接序列化成时间戳,需要以下代码的帮助才可以正常传输。 ...

houmingwei的博客 3516

使用LocalDateTime前后端传值展示问题

时间类型 Java 8提供了新的时间API,相关介绍大家可以自行搜索或者直接参考这篇Java中的时间与时区,因此大家在写实体类时,可以放弃用以前的Date或者Timestamp类型了,直接用LocalDateTime类就行了,MyBatis从3.4.5版本开始就完全支持这种类型了,根本不用自己再去写什么类型转换,目前网上搜到的大部分文章还是让我们自己去实现,其实不用的。 我们来看看其官方文档: mybatis-3.4.5 @harawata harawata released this on 20 Aug

qq_45621228的博客 3207

前后端时间处理坑:JS Date 和 Java LocalDateTime 的适配技巧

JS Date 本质上是一个基于时间戳的包装对象,它内部存储的是自 1970 年 1 月 1 日 00:00:00 UTC 起经过的毫秒数,对外则提供了一系列用于本地时间与 UTC 时间转换的方法。这种设计虽然保证了时间计算的纯粹性,却为前后端交互埋下了隐患 —— 如果前端默认使用本地时区解析,而后端存储的是 UTC 时间对应的 LocalDateTime,就会出现 8 小时的偏差(以东八区为例)。在前后端分离架构的日常开发中,时间数据的传递与解析往往是最容易被忽视,却又最容易引发问题的环节。

2509_93051135的博客 1114

LocalDateTime 类型的时间大小比较

LocalDateTime 类型的时间大小比较 public class LocalDateTimeCompareTest { public static void main(String[] args) { // 此时此刻 LocalDateTime now = LocalDateTime.now(); // 2019-11-12T15:4...

xiaojuge的博客 3万+

localdatetime 格式化_LocalDateTime取代Data处理时间问题

自 Java8开始, JDK中其实就增加了一系列表示日期和时间的新类,最典型的就是 LocalDateTime。直言不讳,这玩意的出现就是为了干掉之前 JDK版本中的 Date老哥!同样,我们也先来感受一下用法!一、获取当前此刻的时间* 测试结果:二、线程安全性问题其实以前我们惯用的 Date时间类是可变类,这就意味着在多线程环境下对共享 Date变量进行操作时,必须由程序员自己来保证线程安全!否...

weixin_39675215的博客 831

Java8 时间的各种使用示例 Date转LocalDateTime LocalDateTime转Date 转时间戳

Java8 时间使用 获取当前日期 //2019-06-19 LocalDate nowLocalDate = LocalDate.now(); DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); //2019-06-19 String nowString = nowLocalDate.format(...

苏雨丶 4887
上一篇: go学习笔记
下一篇: MyBatis的动态SQL
一个大泥球
博客等级 码龄9年 41粉丝 93原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值