【夏令时】用@JsonFormat(pattern = “yyyy-MM-dd“)注解,出生日期竟然年轻了一天

news2025/1/15 17:36:46

前言

🍊缘由

用@JsonFormat(pattern = “yyyy-MM-dd”)注解,出生日期竟然年轻了一天

在这里插入图片描述

艺术源于生活,bug源于开发。

起因是艰苦奋战一个月,测试及验收都顺利通过,上线也稳稳的成功。但是毒奶总是在不经意给你灌上,部分的用户的身份证和出生日期对不上,总是少一天

开始以为前端显示转化错误,但是发现是后台接口给到前端就已经错了;又怀疑数据库存储有问题,但又惨遭打脸,数据库对得很;又排查接口逻辑均没问题,挠头的同时发现了@JsonFormat(pattern = “yyyy-MM-dd”) 这个注解,百度了一下最终发现问题出在【夏令时】这玩意上,特来跟大家分享下解决方案。


🎯主要目标

实现3大重点

1. 了解什么是夏令时
2. @JsonFormat注解详解
3. 解决夏令时问题方案

🍈猜你想问

如何与狗哥联系进行探讨

关注公众号【JavaDog程序狗】

公众号回复【入群】或者【加入】,便可成为【程序员学习交流摸鱼群】的一员,问题随便问,牛逼随便吹。
在这里插入图片描述

此群优势:

  1. 技术交流随时沟通
  2. 任何私活资源免费分享
  3. 实时科技动态抢先知晓
  4. CSDN资源免费下载
  5. 本人一切源码均群内开源,可免费使用
2.踩踩狗哥博客

javadog.net

大家可以在里面留言,随意发挥,有问必答


🍯猜你喜欢

文章推荐

【项目实战】SpringBoot+uniapp+uview2打造H5+小程序+APP入门学习的聊天小项目

【项目实战】SpringBoot+uniapp+uview2打造一个企业黑红名单吐槽小程序

【模块分层】还不会SpringBoot项目模块分层?来这手把手教你!

【ChatGPT】手摸手,带你玩转ChatGPT

【ChatGPT】SpringBoot+uniapp+uview2对接OpenAI,带你开发玩转ChatGPT


正文

🍵夏令时

夏令时,(Daylight Saving Time:DST),也叫夏时制,又称“日光节约时制”和“夏令时间”,是一种为节约能源而人为规定地方时间的制度,在这一制度实行期间所采用的统一时间称为“夏令时间”。一般在天亮早的夏季人为将时间调快一小时,可以使人早起早睡,减少照明量,以充分利用光照资源,从而节约照明用电。各个采纳夏时制的国家具体规定不同,全世界有近110个国家每年要实行夏令时。

1986年4月,中国中央有关部门发出“在全国范围内实行夏时制的通知”,具体做法是:每年从四月中旬第一个星期日的凌晨2时整(北京时间),将时钟拨快一小时,即将表针由2时拨至3时,夏令时开始;到九月中旬第一个星期日的凌晨2时整(北京夏令时),再将时钟拨回一小时,即将表针由2时拨至1时,夏令时结束。从1986年到1991年的六个年度,除1986年因是实行夏时制的第一年,从5月4日开始到9月14日结束外,其它年份均按规定的时段施行。在夏令时开始和结束前几天,新闻媒体均刊登有关部门的通告。1992年起,夏令时暂停实行

🎯总结来说:在1986年到1991年,时间调快了一小时。举个实际的例子来说,一个人的生日为
1991年5月2日0点10分出生,那么使用@JsonFormat就相当于减去一小时变成1991年5月1日23点10分,比实际生日小了一天。


🐠注解@JsonFormat(pattern = “yyyy-MM-dd“)

@JsonFormat用来表示json序列化的一种格式或者类型

	@JsonFormat(
	         pattern = "yyyy-MM-dd"
	 )
	 private Date birthTime;

🎯代码解释:将数据库birthTime这个字段date类型值转化成这个yyyy-MM-dd格式,如1993-05-14 00:00:00 转化为1993-05-14


🥎 解决方案

1. @JsonFormat(pattern = “yyyy-MM-dd”, timezone = “GMT+8” )

GMT(Greenwich Mean Time):格林尼治标准时间。
北京时间使用东八区时间,即GMT加8个小时就是北京时间。

 /**
  * 出生日期.
  */
 @ApiModelProperty("出生日期")
 @JsonFormat(
         pattern = "yyyy-MM-dd",
         timezone = "GMT+8"
 )
 private Date birthTime;

2. 启动时JVM加入参数 -Duser.timezone=GMT+08

在这里插入图片描述

3. @JsonFormat(pattern = “yyyy-MM-dd”, locale = “zh”, timezone = “Asia/Shanghai”)

/**
 * 出生日期.
 */
@ApiModelProperty("出生日期")
@JsonFormat(pattern = "yyyy-MM-dd", locale = "zh", timezone = "Asia/Shanghai")
private Date birthTime;

总结

本文通过实际项目遇到的夏令时小bug作为延伸,详解了**@JsonFormat注解如何解决夏令时的问题,解决方案分别是原注解中加入timezone = “GMT+8”,或者启动时修改jvm参数**,及采用替换注解方式来平替此注解产生的问题,希望能帮助到碰到此问题蒙圈的博友。

JavaDog狗屋地址
个人博客https://www.javadog.net
公众号https://mp.weixin.qq.com/s/_vgnXoQ8FSobD3OfRAf5gw
CSDNhttps://blog.csdn.net/baidu_25986059
掘金https://juejin.cn/user/2172290706716775
知乎https://www.zhihu.com/people/JavaDog
简书https://www.jianshu.com/u/1ff9c6bdb916
giteehttps://gitee.com/javadog-net
GitHubhttps://github.com/javadog-net

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/926927.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于Jenkins构建生产CICD环境(第三篇)

目录 基于Jenkins自动打包并部署docker环境 1、安装docker-ce 2、阿里云镜像加速器 3、构建tomcat 基础镜像 4、构建一个Maven项目 基于Jenkins自动化部署PHP环境 基于rsync部署 基于Jenkins自动打包并部署docker环境 1、安装docker-ce 在192.168.2.123 机器上&#x…

QT初始学习中的个人基础认知

整体感觉 安装的时候感觉更像python的库安装和编译器版本的配合安装。进入创建工程时,感觉是c语言的创建工程的感觉,而且可以看到main和h的头文件,整体来看是C来编写的程序。完成整个工程个人感觉是C编写功能,使用VB实现界面设计…

没有办公室,种子轮却融了4个亿的开源机器学习框架AI表——MindsDB

近日,一条融资消息引起了我的关注,一家将机器学习(ML)引入数据库的开源机器学习(ML)初创公司,成功获得英伟达旗下NVentures的投资。至此,这家被英伟达、Benchmark,以及Mayfield等众多机构投资的种子轮,总额达到5410万美元(近4亿元)。 这家公司叫MindsDB,成立于2017年,…

C 语言编程规范 -- 华为

1. 代码总体原则 1.1 清晰第一,清晰性是易于维护,易于重构的程序必须具备的特征 代码首先是给人读的,好的代码应当可以像文章一样发生朗诵出来,“程序必须为阅读它的人而编写,只是顺便用于机器执行” – Harold Abel…

js深拷贝三种方法

使用递归函数实现深拷贝 const obj {name: zzz,age: 18,hobby: [篮球, 足球],family: {baby: baby}} // 深拷贝 数组 对象 一定要先筛数组再筛对象,因为万物皆对象function deepcopy(newObj, oldObj) {for (const k in oldObj) {// 判断值是否属于array类if (oldObj[k] i…

linux搭建minIO对象存储服务,springBoot整合

minIO 服务搭建 1. 创建安装目录 mkdir -p /usr/local/minio2. 进入安装目录 cd /usr/local/minio3.下载安装包 (wget 如果下载太慢,可以手动下载并上传安装包) wget https://dl.minio.io/server/minio/release/linux-amd64/minio4.创建数据存储文件夹 mkdir -p /usr/loca…

gradle 环境配置

环境变量 # gradle 构建工具目录 export GRADLE_HOME/Users/tangjianghua5/software/gradle-6.0 export PATH$PATH:$GRADLE_HOME/bin # gradle 本地仓库目录 export GRADLE_USER_HOME/Users/tangjianghua5/.m2/repository export PATH$PATH:$GRADLE_USER_HOME全局配置 init.gr…

【LeetCode】437.路径总和Ⅲ

题目 给定一个二叉树的根节点 root ,和一个整数 targetSum ,求该二叉树里节点值之和等于 targetSum 的 路径 的数目。 路径 不需要从根节点开始,也不需要在叶子节点结束,但是路径方向必须是向下的(只能从父节点到子节…

继承抽象类习题答案

基础题目 第一题:概念辨析 什么叫做类与类的继承,作用是什么? 就是子类继承父类的属性和行为,使得子类对象具有与父类相同的属性、相同的行为。作用是子类复用父类内容。 继承后,父类与子类之间,各成员有…

融合CDN 如何有效的抵抗DDoS攻击

绝大部分对外网站所有者都离不开CDN的支持,据统计,全球高达70%的互联网流量都是通过CDN来进行缓存和加速的,不论是国外知名的CDN厂商:如Cloudflare、AWS、Akamai等,还是国内主流的CDN厂商阿里云华为云腾讯云等&#xf…

vue 实现word文档预览和下载 docx-preview 和 vue-office

1.先下载引入 npm i docx-preview --save import { renderAsync } from docx-preview;2.使用 fetch(url) .then((response) > {let docData response.blob(); //将文件转换成bolb形式//选择要渲染的元素let childRef document.getElementsByClassName("childRef&qu…

【ulimit 命令】LINUX单进程能够打开的最大文件句柄数

Linux系统如何查看修改最大打开文件数,这个问题对于很多刚刚学习linux的小伙伴来说觉得有点奇怪。Linux系统和windows不同之处在于更强的多任务多线程,由于文件系统结构的不同linux针对不同进程不同用户都可以设置最打打开文件数。 查看当前系统最大的文件打开数,如下图 在…

5165. CCC单词搜索

题目链接:https://www.acwing.com/problem/content/5168/ 题目: 给定一个 RC 的大写字母矩阵。 请你在其中寻找目标单词 W。 已知,目标单词 W 由若干个不同的大写字母构成。 目标单词可以遵循以下两种规则,出现在矩阵的水平、…

c++11 标准模板(STL)(std::basic_istringstream)(四)

定义于头文件 <sstream> template< class CharT, class Traits std::char_traits<CharT> > class basic_istringstream;(C11 前)template< class CharT, class Traits std::char_traits<CharT>, class Allocator std::allo…

电脑桌面日历提醒怎么设置?设置日期提醒的简单方法

在我们使用电脑办公或学习时&#xff0c;为了避免忘记重要事项&#xff0c;例如会议、截止日期等&#xff0c;我们常常希望能在电脑桌面设置日历提醒。一般来说&#xff0c;电脑系统自带的日历上可以新增日程并设置提醒日期。那么电脑桌面日历提醒怎么设置呢&#xff1f; 很多人…

RocketMQ-(7-1)-可观测-Metrics

RocketMQ 以 Prometheus 格式公开以下指标。您可以使用这些指标监视您的集群。 服务端 Metrics 指标生产者 Metrics 指标消费者 Metrics 指标 版本支持&#xff1a;以下指标 Metrics 是从 5.1.0 版本开始支持。 Metrics 指标详情​ Metric types​ 消息队列 RocketMQ 版定义…

微调llama2模型教程:创建自己的Python代码生成器

本文将演示如何使用PEFT、QLoRa和Huggingface对新的lama-2进行微调&#xff0c;生成自己的代码生成器。所以本文将重点展示如何定制自己的llama2&#xff0c;进行快速训练&#xff0c;以完成特定任务。 一些知识点 llama2相比于前一代&#xff0c;令牌数量增加了40%&#xff0…

CentOS7.9安装Java11

文章目录 Java11版本介绍安装步骤查看并卸载已有版本安装Java11最新版本配置生效 openjdk介绍 Java11版本介绍 Java 11是Java编程语言的一个重要版本&#xff0c;于2018年9月发布Java 11在语言特性、性能优化和安全性方面都有一些显著的改进&#xff0c;为Java开发者提供了更多…

.NetCore之log4net的使用

1.首先下载log4ne的包&#xff1a; 2.添加配置文件log4net.config <?xml version"1.0" encoding"utf-8" ?> <configuration><!-- This section contains the log4net configuration settings --><log4net><appender name&q…

初探函数式编程---以Map/Reduce/Filter为例

如函数式编程--酷壳[1] 总结&#xff0c; 函数式编程的三大特性; 数据不可变性 函数作为一等公民(函数可以像变量一样来创建/修改/传递 等) 尾递归优化(重用stack,减轻栈的压力) 函数式编程用到的几个技术&#xff1a; 函数式编程的理念&#xff1a;把函数当成变量来用&#xf…