线上出一个特别神奇的bug,通过以下方式取到的时间,比真实的时间早了一个小时。处理时区的方式是:

public static Date converDateBaseFromGMT(Date sourceDate) {Calendar cal = Calendar.getInstance();cal.setTime(sourceDate);cal.add(Calendar.MILLISECOND, -TimeZone.getTimeZone(TimeZone.getDefault().getID()).getRawOffset());cal.add(Calendar.MILLISECOND, TimeZone.getTimeZone("GMT+8").getRawOffset());return cal.getTime();}

单位的服务器在国外,有夏时令的问题(比标准的时区晚一个小时)。由于缺乏生活常识,晚的一个小时并没有往这方面去想。走了颇多弯路。

差java API 发现对getRawOffse()方法的描述:

getRawOffsetpublic abstract int getRawOffset()
返回添加到 UTC 以获取此时区中的标准时间的时间量(以毫秒为单位)。<strong>因为此值不受夏令时的影响,所以它称为原始偏移量</strong>。
如果底层 TimeZone 实现子类支持历史 GMT 的偏移量变化,那么此方法返回当前日期的原始偏移量值。例如,在火奴鲁鲁(美国夏威夷州的首府和港市),它的原始偏移量在 1947 年从 GMT-10:30 改变到 GMT-10:00,并且此方法始终返回 -36000000 毫秒(即 -10 小时)。

就是被他坑了。。

可以使用getRowSet()

getOffsetpublic int getOffset(long date)
从给定日期的 UTC 返回此时区的偏移量。如果夏令时在指定的日期是有效的,就用夏令时调整偏移值。
如果底层 TimeZone 实现子类支持历史夏令时安排和 GMT 偏移量改变,那么此方法就返回历史上正确的偏移值。

java中时区的时令问题相关推荐

  1. 常见数据库时间戳格式化函数及用法(按时区格式化时间戳),java计算时区值

    介绍下clickhouse.mysql.SQL server.Oracle数据库中将时间戳按时区进行格式化的函数及用法. 前提 默认传入的时间戳是UTC时间 函数 ClickHouse formatD ...

  2. Java时间处理5---Java8中时区相关类库介绍

    前言 在Java8以前,我们对于时区的处理通常是为时间转换类设置指定TimeZone,然后进行时区时间转换. 而在Java8中不仅对时间日期进行了细粒度处理,有无时区,时区处理也进行了更加细粒度的优化 ...

  3. java中bjt和utc转化_如何在Java中转换UTC和本地时区

    我对Java中的时区感到好奇.我想从设备获取UTC时间(以毫秒为单位)并发送到服务器.当服务器向用户显示时间时,服务器会将其转换为本地时区.我系统中的时区是澳大利亚/悉尼(UTC + 11:00),测 ...

  4. 在java中使用JDBC连接mysql数据库时的服务器时区值无法识别或表示多个时区的问题解决方案

    项目场景: 在java中使用JDBC连接mysql数据库时,报以下的错:Exception in thread "main" java.sql.SQLException: The ...

  5. Java中的时区转换

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

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

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

  7. Java中各国时区的写法

    JAVA 中常用的zoneId 有2种格式: 1.时区偏移量的形式:GMT+8 2.区域的形式:Asia/Shanghai(常用),java中使用该形式的zoneId会自动计算夏令时. 亚洲 时区 国 ...

  8. java代码中设置mysql时区_关于Java中的mysql时区问题详解

    前言 话说工作十多年,mysql 还真没用几年.起初是外企银行,无法直接接触到 DB:后来一直从事架构方面,也多是解决问题为主. 这次搭建海外机房,围绕时区大家做了一番讨论.不说最终的结果是什么,期间 ...

  9. java 夏令时区_Java中的夏令时问题

    因为在用C#做项目的时候被夏令时坑过一回,所以这次将在java中的时区转换信息做一下记录,很简单 SimpleDateFormat inputFormat = new SimpleDateFormat ...

最新文章

  1. 求求你!不要在网上乱拷贝代码了!一段网上找的代码突然炸了,项目出现大BUG...
  2. CRM和ERP的Sales Organization的映射关系
  3. 【贪心】奶牛晒衣服(ybtoj 贪心-1-1)
  4. [vue-cli] vue-cli工程中常用的npm命令有哪些
  5. 《JavaScript精粹(修订版)》——1.6 使用括号和分号结束符(一致的编码方式)...
  6. 第四章 基本TCP套接字编程 第五章 TCP客户/服务器程序实例
  7. 基于BS模式的航材电子商务交易平台(2)
  8. pv 6.3升级日志
  9. Ext 2.0布局实例
  10. JSON字符串和JSON对象的相互转换
  11. 《微信小程序-进阶篇》Lin-ui组件库源码分析-Icon组件
  12. 【历史上的今天】1946年2月14日:世界上第一台计算机ENIAC诞生
  13. A - Chess Placing
  14. 基本数据类型一题解析:已知m=11,n=41,输出m和n的2次方、3次方、4次方。(附代码)
  15. 【实验五 一维数组】7-6 sdut- C语言实验-数日子
  16. Angular二级导航栏
  17. C++ override及虚函数的讲解
  18. 通过Docker创建CentOS容器
  19. 【codevs 1376】帕秋莉·诺蕾姬
  20. 新闻管理的删除功能+新闻首页+详情页

热门文章

  1. 自动化控制面试问题整理
  2. [CF1039E]Summer Oenothera Exhibition[根号分治+lct]
  3. outlook邮箱链接如何用ie打开_Outlook手机邮箱配置文档
  4. Simultaneous Multithreading (同时多线程)
  5. 选择尚学堂与传智播客的java培训?
  6. 100000以内的质数表
  7. 自建视频流媒体服务器需要满足哪些条件?
  8. CreateWindowEx和CreateWindow的区别
  9. SpringMVC从基础到源码
  10. MySQL 聚集索引(InnoDB)和 非聚集索引(MyISAM) 精讲~两张图彻底搞懂