最近出现一个问题是这样的 我们的系统在国外打印的日志时间由于时差关系和国内不一致 看起来不方便 希望国外的日志和国内保持一致 即 需要对不同时区的时间做转换调整 统一为国内时间。 一、关于时区的一些概念

1.1 什么是时区

timezone 即由于世界各国家与地区经度不同 地方时也有所不同 按照经度将全球划分为24个时区。

时区有相应的英文字母缩写 例如GMT,UTC,CST等 常见的时区 具体参考 这里。

1.2 什么是夏令时

通俗易懂的解释就是 夏令时开始的时候 大家在夜里2点把表往前调一个小时 即本来两点 被你手动调成了三点 如果你七点起床 那你那天晚上就会少睡一个小时 为什么这么做是因为夏天的时候7点其实天已经亮了 这样你到了第二天晚上8点 其实是之前的7点 就应该睡觉了 这样就可以节省电了 所以夏令时叫 Daylight Saving Time DST 这篇文章讲了为什么要有夏令时 什么时候去修改表的时间 为什么是晚上2点修改 反对夏令时 还有人写paper说夏令时没什么用。

二、如何在不同时区之间转换时间

上部分分析了不同时区 还有夏令时的区别 即我们在转换时区的时候要考虑这两个问题 基本思路是

获取到源时区相对于GMT的差距 考虑夏令时 。获取到目的时区相对于GMT的差距 考虑夏令时 。用当前的时间 - 源差距 目的差距。

代码如下所示

public class TimeZoneTransform {

private static String dateTransformBetweenTimeZone(Date sourceDate, DateFormat formatter,

TimeZone sourceTimeZone, TimeZone targetTimeZone) {

Long targetTime sourceDate.getTime() - sourceTimeZone.getRawOffset() targetTimeZone.getRawOffset();

return getTime(new Date(targetTime), formatter);

private static String getTime(Date date, DateFormat formatter) {

return formatter.format(date);

private static String getTimeZone() {

Calendar cal Calendar.getInstance();

// getOffset will access to offset and contains DaylightTime

int timeZone cal.getTimeZone().getOffset(System.currentTimeMillis()) / (3600000);

if (timeZone 0) {

return String.valueOf( timeZone);

return String.valueOf(timeZone);

public static String getGMTTime(Date date, SimpleDateFormat formatter) {

TimeZone srcTimeZone TimeZone.getTimeZone( GMT getTimeZone());

TimeZone destTimeZone TimeZone.getTimeZone( GMT 8

return dateTransformBetweenTimeZone(date, formatter, srcTimeZone, destTimeZone);

public static void main(String[] args) {

System.out.println(getGMTTime(new Date(System.currentTimeMillis()), new SimpleDateFormat()));

三、Java中关于时间处理的类

关于Date Calendar LocalDate/LocalTime的介绍文章。

参考资料

Java时区处理之Date,Calendar,TimeZone,SimpleDateFormat

[完]

pip 安装使用 ImportError: No module named setuptools 解决方法

78210

责任编辑:xiaochao

java不同时区时间转换,Java不同时区(timezone)之间时间转换相关推荐

  1. java 不同时区时间转换_Java对世界不同时区timezone之间时间转换的处理方法

    最近出现一个问题是这样的:我们的系统在国外打印的日志时间由于时差关系和国内不一致,看起来不方便,希望国外的日志和国内保持一致,即:需要对不同时区的时间做转换调整,统一为国内时间. 一.关于时区的一些概 ...

  2. Java 中,类、类对象、泛型之间的转换

    Java 中,类.类对象.泛型之间的转换 R 为非泛型 获得类 通过类型名来获得类 通过对象来获得类 通过类名字符串来获得类 通过类来获得类名字符串 通过类来获得对象 使用 R 的无参数构造器来创建对 ...

  3. 计算机不同进制数之间的转换,计算机进制数之间的转换002

    不错 除以16取余和倍数 如: (120)10 120/16 =8 ...8(余8) 8(余数8)/16=0 (8) (120)10 =(88)16 回答人的补充 2009-08-14 09:42 计 ...

  4. Java不同时区(timezone)之间时间转换

    最近出现一个问题是这样的:我们的系统在国外打印的日志时间由于时差关系和国内不一致,看起来不方便,希望国外的日志和国内保持一致,即:需要对不同时区的时间做转换调整,统一为国内时间. 一.关于时区的一些概 ...

  5. Java与数据库中的datetime Timestamp以及String之间的转换

    这是今天做数据库的时候碰到的问题,先大概说一下问题,首先大家知道数据库中对于时间的存储类型有好几种,比如timestamp,datetime,date, 那么我们的程序不可避免会出现对于时间的写入和读 ...

  6. Java基础——基本类型和包装类、基本类型和字符串之间的转换

    基本类型和包装类之间的转换 基本类型和包装类之间经常需要互相转换,以 Integer 为例(其他几个包装类的操作雷同哦): 在 JDK1.5 引入自动装箱和拆箱的机制后,包装类和基本类型之间的转换就更 ...

  7. java int 64 转换_Java中数据类型及其之间的转换

    Java中数据类型及其之间的转换 Java中数据类型及其之间的转换 基本的数据类型 基本类型有以下四种: 1)int长度数据类型有:byte(8bits).short(16bits).int(32bi ...

  8. java字符串与基本数据_java --字符串与基本数据类型之间的转换

    public static void main(String[] args) { /** * 1.字符串与基本数据类型之间的转换 * 字符串-->基本数据类型,调用xx.parseXxx(Str ...

  9. java类型之间的转换_JAVA基本数据类型及之间的转换

    一.数据类型 1.布尔型(boolean) :true/false,不可以以0或非0的数字代替:不能进行数据之间的转换. 2.整数类型 ** 整型默认为int型,而long类型表示的范围要超出int表 ...

  10. java 基础类型转换_java基础之基本数据类型及之间的转换

    1.布尔型(boolean) :true/false,不可以以0或非0的数字代替:不能进行数据之间的转换. 2.整数类型 ** 整型默认为int型,而long类型表示的范围要超出int表数范围,所以, ...

最新文章

  1. 计算机专业导论论文2000字,计算机专业导论论文.doc
  2. nginx https透明代理_nginx正向https代理配置
  3. 高职计算机基础知识试题及答案,职业技术学院招生考试计算机基础知识试题-20210713174723.doc-原创力文档...
  4. JSP项目引入Vue.js进行项目开发(工程搭建)
  5. #FME#FME将TXT转成shape
  6. URAL 1069 Prufer Code 优先队列
  7. html5 spice 虚拟桌面,开源桌面虚拟化spice体验
  8. 编程的思想是什么,如何建立编程思想,如何训练和提高编程思想?
  9. 商城后台学习/笔记/思考
  10. 【隐式图搜索遍历学习】倒牛奶
  11. JAVA商城源码-B2B2C商城系统-独立部署,一套源码终身可用
  12. hashCode()方法是什么,hashCode相同代表什么
  13. 美通企业日报 | 科技和能源行业最受中国公众信任;英特尔携手大华发展智能视觉技术...
  14. 小说作者推荐:臣年合集
  15. 贝尔商道赚钱思维36道第25道:流传千年的赚钱秘密
  16. 日本计算机博士回国就业情况,海归就业创业调查 海归博士就业真实现状
  17. Spring Integration基本用法
  18. Arduino STM32用NTC热敏电阻 OLED显示屏制作温度计
  19. [软件下载]Skype for Windows 1.1.0.81 Beta
  20. 2019年广州Java开发面试总结

热门文章

  1. 【B2B】三星智能教育解决方案
  2. Synchronizing CPU and GPU Work 同步CPU和GPU工作
  3. 深度学习_联邦学习_漫画详解
  4. 【教学类-19-03】20221127《ABBABB式-规律排序-A4竖版2份》(中班)
  5. 2021年全球与中国油位计行业市场规模及发展前景分析
  6. 读书笔记——《指标陷阱》
  7. 关于打印机柯尼卡美能达出现c2557错误解决方法
  8. Spring Social简明教程
  9. MySQL 的索引、执行计划、优化器算法
  10. 芯进电子已量产第二代霍尔电流传感器,量程5A~100A