因为最近拿到一个需求就是将数据库存放的时间进行转换成所对应的时区时间,所以这里就分享下如何用Java程序是实现这个功能。

数据库层面

如果数据库存放的是整型的时间戳,则可以使用FROM_UNIXTIME(数值)转换为对应的日期时间格式,然后再使用CONVERT_TZ(dt,from_tz,to_tz)函数将对应的日期时间转换为对应的时区时间。如果存放的是系统毫秒值,则先要将毫秒值将其变成秒,然后再转换成对应的时间日期格式。

示例:

获取当前时间戳

SELECT UNIX_TIMESMTAMP() as ‘当前时间戳’;

将时间戳转换对应的日期格式

SELECT FROM_UNIXTIME(1594952707) as ‘北京时间’;

时区转换
SELECT FROM_UNIXTIME(1594952707) as ‘北京时间’,CONVERT_TZ(FROM_UNIXTIME(1594952707),’+08:00’,’+09:00’) as ‘东京时间’;

了解基本用法之后,看看具体是如何在数据库层面实现动态变换时区:
在mysql中给我们提供了一个time_zone变量用来获取系统的时区,所以我们可以根据通过获取当前会话中的time_zone,然后使用convert_tz函数将会话的timezone转换我们需要的。SQL语句如下:

SELECT CONVERT_TZ(FROM_UNIXTIME(1594952707),@@session.time_zone,'+09:00') as 'UTC+09:00';
SELECT CONVERT_TZ(FROM_UNIXTIME(1594952707),@@session.time_zone,'+10:00') as 'UTC+10:00';



这里我们只要动态的传入对于应的偏移量即可~

Java业务逻辑层面

获取数据库的int类型的时间,然后转换成Date类型,Java 1.8提供了TimeZone对象,通过TimeZone的getTimeZone(zoneId)方法,传递一个偏移量,就可以得到带时区的日期。在利用DateFormate对象提供的setTimeZone(TimeZone zone) 方法设置此 DateFormat对象的日历的时区。 最后通过format方法将date格式化成对应的时区日期时间。

 public static String formatTimezone(DateFormat dateFormat, Date date, String timezone) {try {dateFormat.setTimeZone(TimeZone.getTimeZone(timezone));return dateFormat.format(date);} catch (Exception e) {e.printStackTrace();}return null;}

Java实现UTC时区转换相关推荐

  1. Java中的时区转换

    转载自 halfclear 原文:https://blog.csdn.net/halfclear/article/details/77573956 1.Date中保存的是什么 在java中,只要我们执 ...

  2. Java 中 UTC 如何转换 CST(北京时间)

    UTC.GMT.CST等时间概念 GMT(格林尼治平时) 格林尼治平时(又称格林尼治平均时间或格林尼治标准时间,旧译格林威治标准时间:英语:Greenwich MeanTime,GMT)是指位于英国伦 ...

  3. java date类 时区_Java时区转换及Date类实现原理解析

    这篇文章主要介绍了Java时区转换及Date类实现原理解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 一.时区的说明 地球表面按经线从东到西,被 ...

  4. Java与MySQL时区

    一.CST 时区混乱 CST是一个混乱的时区,它有四种含义: 美国标准时间 Central Standard Time (USA):UTC-06:00(或UTC-05:00).夏令时:3月11日至11 ...

  5. java整数能强转转字符,Java中数据类型默认转换和强制类型转换

    默认转换: a:由低到高一次为:(byte   short    char  )---int ---long ---float --- double b:注意:byte   short    char ...

  6. 关于java时区转换夏令时问题及解决办法

    关于中国的夏令时问题:参考另外一篇: https://blog.csdn.net/u011165335/article/details/78924498 这里:主要讲的是: 在夏令时结束的时候,jav ...

  7. Java中输出时区的缩写_Java中的时区转换小结

    时间加减 Date currentDate = new Date(System.currentTimeMillis()); Calendar cal = Calendar.getInstance(); ...

  8. java时区转换 夏令时_实现时区的转换--涉及到冬令时和夏令时的时候

    #时区转换 主要是用来转换时区用的,特别涉及到冬令时和夏令时的区域,这样会很烦,所以需要用个方法来转换 这个主要是创建一些模型 using System; using System.Collectio ...

  9. java 时区处理_如何使用Java处理日历时区?

    如何使用Java处理日历时区? 我有一个来自我的应用程序的Timestamp值. 用户可以在任何给定的本地TimeZone中. 由于此日期用于假定给定时间始终为GMT的WebService,因此我需要 ...

  10. java国际化之时区问题处理

    在国际化的项目中需要处理的日期时间问题主要有两点: 1.日期时间的国际化格式问题处理: 2.日期时间的时区问题处理,这两个问题要区分开,不要弄混了. 日期时间国际化化格式处理 对应的关键词:Local ...

最新文章

  1. php7+的php-fpm参数配置,注意事项
  2. 35岁以前成功的12条黄金法则(1)
  3. UI设计培训之设计中的点线面-面
  4. 自学python推荐书籍同时找哪些来实践-机器学习:Python实践 PDF 原书完整版
  5. 第三十三讲 非线性方程组化为一阶方程
  6. 制造内核崩溃并使用crash分析内核崩溃产生的vmcore文件
  7. 课程上线 -“新手入门 : Windows Phone 8.1 开发”
  8. activiti入门2流程引擎API和服务基础设施
  9. OpenStack 简介
  10. 【设计模式系列】行为型模式之Mediator模式
  11. NLP复习资料(1)-绪论、数学基础
  12. 改变 this 指向的 call 和 apply
  13. 2017.7.18 树上距离=k 思考记录
  14. SEM和SEO的区别?哪个更好
  15. java使用POI识别excel的复选框插件
  16. 对今日头条问答部分的预测-未来可能会挂掉
  17. python实现打印九九乘法表
  18. 二零年的十一月开始 努力做个极简的人
  19. 什么是搜索引擎蜘蛛(spider)
  20. wifi吞吐量测试环境搭建和mifi的wifi吞吐量测试

热门文章

  1. 如何将confluence表格的第一行或者第一列固定
  2. flutter之出现 List is not a subtype of type 问题
  3. 爬虫基本操作+获取豆瓣250top电影信息
  4. 数据分析师的工作职责是什么?
  5. Python里对于shape()的理解
  6. 从支点网CEO李岩经历中,我读到的一些东西
  7. 微博 用户画像_常见信息流平台用户画像分析
  8. 自助图书馆系统-Tkinter界面和openpyxl表格综合设计案例
  9. Linux Command ss
  10. 《东周列国志》第十回 楚熊通僭号称王 郑祭足被胁立庶