java中时区的时令问题
线上出一个特别神奇的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中时区的时令问题相关推荐
- 常见数据库时间戳格式化函数及用法(按时区格式化时间戳),java计算时区值
介绍下clickhouse.mysql.SQL server.Oracle数据库中将时间戳按时区进行格式化的函数及用法. 前提 默认传入的时间戳是UTC时间 函数 ClickHouse formatD ...
- Java时间处理5---Java8中时区相关类库介绍
前言 在Java8以前,我们对于时区的处理通常是为时间转换类设置指定TimeZone,然后进行时区时间转换. 而在Java8中不仅对时间日期进行了细粒度处理,有无时区,时区处理也进行了更加细粒度的优化 ...
- java中bjt和utc转化_如何在Java中转换UTC和本地时区
我对Java中的时区感到好奇.我想从设备获取UTC时间(以毫秒为单位)并发送到服务器.当服务器向用户显示时间时,服务器会将其转换为本地时区.我系统中的时区是澳大利亚/悉尼(UTC + 11:00),测 ...
- 在java中使用JDBC连接mysql数据库时的服务器时区值无法识别或表示多个时区的问题解决方案
项目场景: 在java中使用JDBC连接mysql数据库时,报以下的错:Exception in thread "main" java.sql.SQLException: The ...
- Java中的时区转换
转载自 halfclear 原文:https://blog.csdn.net/halfclear/article/details/77573956 1.Date中保存的是什么 在java中,只要我们执 ...
- Java中输出时区的缩写_Java中的时区转换小结
时间加减 Date currentDate = new Date(System.currentTimeMillis()); Calendar cal = Calendar.getInstance(); ...
- Java中各国时区的写法
JAVA 中常用的zoneId 有2种格式: 1.时区偏移量的形式:GMT+8 2.区域的形式:Asia/Shanghai(常用),java中使用该形式的zoneId会自动计算夏令时. 亚洲 时区 国 ...
- java代码中设置mysql时区_关于Java中的mysql时区问题详解
前言 话说工作十多年,mysql 还真没用几年.起初是外企银行,无法直接接触到 DB:后来一直从事架构方面,也多是解决问题为主. 这次搭建海外机房,围绕时区大家做了一番讨论.不说最终的结果是什么,期间 ...
- java 夏令时区_Java中的夏令时问题
因为在用C#做项目的时候被夏令时坑过一回,所以这次将在java中的时区转换信息做一下记录,很简单 SimpleDateFormat inputFormat = new SimpleDateFormat ...
最新文章
- 设计模式之Builder(建造者)(转)
- Ranger-Sqoop2插件实现详解
- win定时关机_电脑定时关机,你造吗?
- 五种开源API网关实现组件对比
- Windows 7 SP1开发完毕 已进入测试阶段
- Google Chrome谷歌旧版本下载
- html弹窗可以复制,简单漂亮的js弹窗可自由拖拽且兼容大部分浏览器
- 海森矩阵介绍及其在机器学习、深度学习中的理解
- PCA主成分分析去噪与降维
- 计算机上e盘拒绝访问,e盘拒绝访问怎么办,教你win7系统e盘拒绝访问的应对办法...
- Linux开发运维常用命令
- 不重装系统解决win10更新错误0x800f0922
- 懂球帝Android客户端WebView优化之路
- android 自定义桌面,无需 root,3 个 App 帮你构建高效的 Android 桌面
- 富文本插件 和回显 vue-quill-editor
- JavaWeb开发 —— Ajax
- Android 手机自动化测试工具有哪几种?
- 校校通php,ZDSoft.net校校通软件平台7.0((8.5日升级版).rar(请使用迅雷)
- 深圳软件测试培训:SVN与Git的差异
- 07长电债今上市 公司债正式启航
热门文章
- [Python从零到壹] 四.网络爬虫之入门基础及正则表达式抓取博客案例
- excel显著性检验_《如何利用Excel对所得数据进行显著性分析?》 excel怎么做方差齐性检验...
- cisco 华三 对接_H3C 交换机与Cisco交换机采用链路聚合对接的配置案例
- 阿里云服务器硬盘不够用怎么办?
- 冰河亲自整理的Git命令汇总,悄悄努力,然后惊艳所有人
- mac上配置outlook2019 + qqmail
- 视频文件头解析--mkv
- 2021年好用的几款大数据分析工具
- c语言企业自动化管理系统,基于C语言制作的人事管理系统-自动化毕业论文.doc...
- 支付宝当面付之扫码支付“无效签名”