首页 > 编程语言 >使用java中的Calendar遇到的时区问题

使用java中的Calendar遇到的时区问题

时间:2023-06-25 15:44:31浏览次数:38  
标签:1986 00 java Sep 23 13 Calendar 时区 Sat

项目中有一个增加1小时的工具函数 结果今天测试出现了一个问题
原因是1986年的9月13号到14号之间会有一个时区的转换 需要程序特殊处理下
这是原函数的结果

  Sat Sep 13 22:00:00 CDT 1986
  Sat Sep 13 23:00:00 CDT 1986
  Sat Sep 13 23:00:00 CST 1986
  Sun Sep 14 00:00:00 CST 1986

  这是修改后想要的结果

  Sat Sep 13 22:00:00 CDT 1986
  Sat Sep 13 23:00:00 CDT 1986
  Sun Sep 14 00:00:00 CST 1986
  Sun Sep 14 01:00:00 CST 1986

 

/**
* 时间加减小时
*
* @param time 时间
* @param hour 正数加负数减
* @return
*/
public static Date addTimeOfHour(Date time, int hour) {

Calendar calendar = Calendar.getInstance(TimeZone.getTimeZone("Asia/Shanghai"));

// TODO <x>: 补充修改因1986年9.13.23时的cst和dst的时区转换问题处理
SimpleDateFormat inputFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
inputFormat.setTimeZone(TimeZone.getTimeZone("Asia/Shanghai"));
try {
time= inputFormat.parse(inputFormat.format(time));
} catch (ParseException e) {
e.printStackTrace();
}
// FIXME <x>: 修改因1986年9.13.23时的cst和dst的时区转换问题缺陷

calendar.setTime(time);
calendar.add(Calendar.HOUR_OF_DAY, hour);
return calendar.getTime();
}

 

 

 

标签:1986,00,java,Sep,23,13,Calendar,时区,Sat
From: https://www.cnblogs.com/YinXuanZhiZhi9/p/17503052.html

相关文章

  • Java学习之Mysql基础问题整理
    Mysql常见存储引擎命令:SHOWENGINES; Mysql版本5.5以后默认引擎是InnoDB,5.5版本以前的是MyISAMInnoDB和MyISAM的区别1、InnoDB支持事务,MyISAM不支持。对于InnoDB每一条SQL语言都默认封装成事务,自动提交,这样会影响速度,所以最好把多条SQL语言放在begin和commit之间,组成一个......
  • JAVA SE基础《二》---- JAVA语法
    目录JAVA基础语法注释字面量变量变量使用注意事项关键字、标识符 一.注释详解什么是注释?注释是写在程序中对代码进行解释说明的文字,方便自己和其他人查看,以便理解程序的。注释有哪些单行注释 多行注释 文档注释:文档注释的内容是可以提取到一个程序说......
  • 迟来的秋招面经,17家公司,Java岗位
    一位朋友秋招面试了17家公司(都是中小公司或者银行),Java后端岗。下面是他的个人情况、求职经验已经这17家公司的面经。个人情况和求职经验其实现在是挺后悔大学没有好好的学习的,因为基本上都会提到一些成绩相关的事情,每次填成绩都只能填个50%(实际上更低),并且还有挂科,没有奖学金,没......
  • java调用cmd命令
    importlombok.extern.slf4j.Slf4j;importorg.apache.commons.io.IOUtils;importjava.io.InputStream;importjava.nio.charset.StandardCharsets;importjava.util.AbstractMap;importjava.util.List;importjava.util.Map;importjava.util.concurrent.Completab......
  • WebAssembly能不能取代JavaScript?15张卡通图给你答案!
    一切能用JavaScript实现的,终将用JavaScript实现。一切能编译为WebAssembly的,终将编译为WebAssembly。前端er们,WebAssembly用上了吗?在浏览器中快速运行非JavaScript语言,比如C、C++、Rust,是不是很香?今天,我们就来用15张小画图说WebAssembly。有必要先介绍一下小画的创作者。她叫LinCl......
  • JAVA SPI简单实现
    JavaSPI(ServiceProviderInterface)是一种用于实现组件化、插件化和可扩展性的机制。它是Java标准库提供的一种服务发现机制,用于在运行时动态加载和实例化实现了特定接口的类。JavaSPI的核心概念是服务接口(ServiceInterface)、服务实现者(ServiceProvider)和服务提供者配置文件(S......
  • JavaScript
    JavaScriptHTML(结构层)CSS(表现层)JavaScript(行为层)什么是JavaScriptJavaScript是一门世界上最流行的脚本语言。一个合格的后端人员,必须要精通JavaScript历史ECMScript它可以理解为是JavaScript的一个标准。最新版本已经到es6版本。但是大部分浏览器还只停留在支持es5代......
  • B+ tree implemented in Java
    B+树相关介绍B+树是一棵多叉排序树,即每个非叶子节点可以包含多个子节点,其整体结构呈扁平化,所以其非常适配于数据库和操作系统的文件系统中。且B+树能够保持数据的稳定有序,插入和删除都拥有较稳定的对数时间复杂度。B+树的特性:以m阶为例,m表示内部节点即非叶子节点可以包含的......
  • Java实现扑克牌24点游戏
    游戏规则:4张扑克牌A~K分别代表1点至13点,要求4张牌加减乘除后得到点数为24.(除法必须整除)代码实现思路:构建初始变量实现初始化变量值实现运算分析可能出现的运算组合不考虑运算符优先级,组合3/5/7重复(最后会解释为什么不考虑运算符优先级,注1)代码实......
  • Java学习之mysql为什么可以实现可重复读
    什么是mvccMysql的隔离级别是‘可重复读’,即:事务A在读到一条数据之后,此时事务B对该数据进行了修改操作并提交,那么事务A再读该数据,依然还是原来的内容。它的实现原理是MVCC(Multi-VersionConcurrencyControl)多版本并发控制,MVCC保证当前查询为快照读,所以不受其他事务影响。什......