我的编程空间,编程开发者的网络收藏夹
学习永远不晚

jvm中指定时区信息user.timezone问题如何解决

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

jvm中指定时区信息user.timezone问题如何解决

本篇内容介绍了“jvm中指定时区信息user.timezone问题如何解决”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

问题

同一份程序使用时间LocalDateTime类型,在国内和国外部署后,返回的时间信息前端使用出问题。 因为LocalDateTime不带时区信息,国内调用后,前端页面默认使用的浏览器所在os的时区(我们的系统中没有给用户设置时区), 因此会出现时间不一致, 或者判断超时了,但是实际上没有超时的问题。

解决方式:

要么返回timestamp数字类型,前端自己解析。 缺点:直接使用api的同事不方便看操作时间信息。

用户可以可以在个的profile中设置时区,方便各个时区用户在一个系统中操作。 缺点:改动较多。

最后的折中方法:
后端内部使用ZonedDateTime,返回的时间中带上时区信息。 备注:这里应用系统没有使用数据库,因为没有使用数据库时间格式。

这里遇到一个问题,国内机器都是时区为

jvm中指定时区信息user.timezone问题如何解决

springboot 程序启动后,ZoneDateTime 格式默认是"2023-02-16T21:44:31.914407+08:00";

jvm中指定时区信息user.timezone问题如何解决

但是国外的机器不行,依然不带时区信息。

在jvm启动参数中指定时区信息
国内启动不指定时间,os默认的是"Asia/Shanghai"。 国外的启动参数指定为-Duser.timezone=CET

示意:(这里是示意,省略其他参数,实际参数要跟多)
Java -jar -Dspring.profiles.active=dev -Duser.timezone=CET app.jar

具体代码

1,ObjectMapper中设置时区和时间格式

    ObjectMapper mapper = new ObjectMapper();    mapper.findAndRegisterModules();    mapper.setTimeZone(TimeZone.getDefault()); // 在本项目必须有这样,某则有些接口中返回的ZonedDateTime序列化后不带时区信息,添加这行就会带上时区信息    mapper.registerModule(new JodaModule());    mapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS);    return mapper;

2, 其他区地方解析返回的时间
引入依赖包

<dependency><groupId>joda-time</groupId><artifactId>joda-time</artifactId><version>2.12.2</version></dependency>
import org.joda.time.DateTime;import org.joda.time.format.DateTimeFormat;import org.joda.time.format.DateTimeFormatter;   DateTimeFormatter formatter = DateTimeFormat.forPattern("yyyy-MM-dd'T'HH:mm:ss.SSSSSSZ").withZoneUTC();    //  String str = "2022-02-16T21:44:31.914407+08:00";    String str = "2022-02-17T14:35:48.8932+08:00";    //String str = "2022-02-16T21:44:31+09:00";    DateTime dateTime = formatter.parseDateTime(str);    log.info("dateTime:{}", dateTime);    String strAgain = dateTime.toString(formatter);    log.info("strAgain:{}", strAgain);

“jvm中指定时区信息user.timezone问题如何解决”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注编程网网站,小编将为大家输出更多高质量的实用文章!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

jvm中指定时区信息user.timezone问题如何解决

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

jvm中指定时区信息user.timezone问题如何解决

本篇内容介绍了“jvm中指定时区信息user.timezone问题如何解决”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!问题同一份程序使用时
2023-07-05

Go语言中如何解决并发定时器问题?

Go语言中的并发定时器问题是指在多个goroutine同时需要使用定时器时可能会出现的一些并发相关的问题。为了解决这些问题,Go语言提供了一些机制和技巧,本文将详细介绍这些解决方案,并给出代码示例。使用time.TickerGo语言的标准库
2023-10-22

如何解决windows系统中想禁止运行某些指定软件的问题

如何解决windows系统中想禁止运行某些指定软件的问题,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。域控制器是Active Directory域的指挥机构,出于安全性考虑,可
2023-06-14

css中如何解决引入指定字体@font-face兼容各浏览器的问题

这篇文章将为大家详细讲解有关css中如何解决引入指定字体@font-face兼容各浏览器的问题,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。网页制作中,如果想使用特定的字体可以通过 @font-face
2023-06-08

如何解决使用Hybris Commerce User API读取用户信息时电话字段没有返回问题

小编给大家分享一下如何解决使用Hybris Commerce User API读取用户信息时电话字段没有返回问题,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!在使用Hybris Commerce User API读取一个u
2023-06-04

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录