java.sql.SQLException: HOUR_OF_DAY: 2 -> 3
1、问题报错
2、原因
由于没过的夏令营导致的报错。
夏令时:
由于美国有夏令时,CST非夏令时对应 UTC-06:00,夏令时对应 UTC-05:00 。
美国的夏令时,从每年3月第2个星期天凌晨开始,到每年11月第1个星期天凌晨结束。
以2020年为例:
夏令时开始时间调整前:2020年03月08日星期日 02:00:00,时间向前拨一小时.
调整后:2020年03月08日星期日 03:00:00
夏令时结束时间调整前:2020年11月01日星期日 02:00:00,时间往回拨一小时.
调整后:2020年11月01日星期日 01:00:00
这意味这:CST没有2020-03-08 02:00:00~2020-03-08 03:00:00 这个区间的时间。会有两个 2020-11-01 01:00:00~2020-11-01 02:00:00区间的时间。
例:
//相差14小时
Calendar calendar = Calendar.getInstance(TimeZone.getTimeZone("CST"), Locale.US);
calendar.setLenient(false);
//2020-03-08 01:02:00
calendar.set(2020, 2, 8, 1, 2, 0);Date s = new Date(calendar.getTimeInMillis());
SimpleDateFormat f1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
System.out.println(f1.format(s));//2020-03-08 15:02:00
//2020-03-08 01:02:00 非夏令时间,于北京时间相差14小时。例:
//相差13小时
Calendar calendar = Calendar.getInstance(TimeZone.getTimeZone("CST"), Locale.US);
calendar.setLenient(false);
//2020-03-08 03:02:00
calendar.set(2020, 2, 8, 3, 2, 0);Date s = new Date(calendar.getTimeInMillis());
SimpleDateFormat f1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
System.out.println(f1.format(s));//2020-03-08 16:02:00
//2020-03-08 03:02:00 夏令时间,于北京时间相差13小时。例:
//抛出 Exception: HOUR_OF_DAY: 2 -> 3
Calendar calendar = Calendar.getInstance(TimeZone.getTimeZone("CST"), Locale.US);
calendar.setLenient(false);//严格数据校验
//2020-03-08 02:02:00
calendar.set(2020, 2, 8, 2, 2, 0);Date s = new Date(calendar.getTimeInMillis());//抛出异常:java.lang.IllegalArgumentException: HOUR_OF_DAY: 2 -> 3
SimpleDateFormat f1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
System.out.println(f1.format(s));
//2020-03-08 02:02:00 在CST 时区中是一个不存在的时间,因此出现了异常。
3、解决方案
- mysql-connector-java.jar版本6.x、8.x降级为5.1.x
- 对于高版本jdbc,连接串强制指定时区参数:serverTimezone=GMT%2B8(一般采用这种方式)
- 对于高版本jdbc,mysql数据库强制修改time_zone为“+8:00”,而非“SYSTEM
java.sql.SQLException: HOUR_OF_DAY: 2 -> 3相关推荐
- nested exception is java.sql.SQLException: HOUR_OF_DAY: 0 -> 1
Cause: java.sql.SQLException: HOUR_OF_DAY: 0 -> 1 HOUR_OF_DAY: 0 -> 1; nested exception is jav ...
- Java 程序读取Mysql数据库时间信息与真实时间相差 13、14 小时、SQLException: HOUR_OF_DAY: 2 -> 3
CST时区引起的异常: Java 程序读取Mysql数据库时间信息,与真实时间相差 13.14 小时 java.sql.SQLException: HOUR_OF_DAY: 2 -> 3 原因: ...
- java.sql.SQLException: Parameter index out of range (5 > number of parameters, which is 4).
问题描述: 启动项目调接口的时候控制台报错 Cause: java.sql.SQLException: Parameter index out of range (5 > number of p ...
- Cause: java.sql.SQLException: Parameter index out of range (4 > number of parameters, which is 3).
Cause: java.sql.SQLException: Parameter index out of range (4 > number of parameters, which is 3) ...
- mysql5.5异常: java.sql.SQLException: Packet for query is too large (1055975 > 1048576).
mysql5.5异常: java.sql.SQLException: Packet for query is too large (1055975 > 1048576). mysql5.5异常: ...
- php column not found,java.sql.SQLException: Column 'cloumn name' not found.
Hi, My system configuration: Mandrake 9.0 + Tomcat 4.1.24 + MySQL 4.0.12. + Apache [問題] 我有一隻Servlet ...
- java.sql.SQLException: Data truncation: Truncated incorrect DOUBLE value
mysql 报这个异常:java.sql.SQLException: Data truncation: Truncated incorrect DOUBLE value update 表名 set c ...
- HikariPool使用MySQL/MariaDB数据库报错解决:java.sql.SQLException: Access denied for user 'root'@'localhost' (u
在使用HikariPool连接到我的数据库时报错如下,完整的报错放在最后: 2019-06-25 20:24:26.048 ERROR 18204 --- [nio-8080-exec-9] com. ...
- java.sql.SQLException: Lock wait timeout exceeded
2019独角兽企业重金招聘Python工程师标准>>> 先说我我的解决方法:找到锁住的线程然后kill掉. mysql> kill thr_id; 下面简单分析一下到底应该ki ...
最新文章
- pytorch Tensor操作(二)
- Lua_第17 章 数学库
- Web服務器的配置方法
- linux 离线安装中文字库,centos7 离线安装字体fontconfig
- Office 365系列之八:配置和体验Exchange和Lync
- Netty学习总结(3)——Netty百万级推送服务
- Mac电脑下配置maven环境变量
- vue的$message(提示框换行)
- 分布式室内空气质量监测系统设计
- EOS的trace_api_plugin插件测试
- python爬取5442网站图片
- Juc_无juc情况
- 短视频抖音账号矩阵seo优化系统技术代开发
- 装配图中齿轮的画法_机械制图教程(8.2)装配图的规定画法和特殊画法
- 第 16 章 string类和标准模板库
- Opencv3.0--第二篇【双阈值二值化图像】
- HTTP请求/响应报文头部结构
- 什么是中间件,中间件有什么作用
- 月入五万的码农,抢了文科生的饭碗
- 【SCCB接口协议简介(适用于OV系列摄像头)】