遇到的问题---java---使用SimpleDateFormat进行时区加8小时后出现24点的数据,导致时间异常无法入库

Posted 张小凡vip

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了遇到的问题---java---使用SimpleDateFormat进行时区加8小时后出现24点的数据,导致时间异常无法入库相关的知识,希望对你有一定的参考价值。

情况

因为数据库中保存的是无时区的时间格式,所以在java项目中 获取时间数据后 需要加上东八区的时间。

使用代码如下:

	public static String timeAdd8Hour(Date date) 

		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd kk:mm:ss ");

//		System.out.println("格式化输出:" + sdf.format(date));

		sdf.setTimeZone(TimeZone.getTimeZone("Asia/Shanghai"));

//		System.out.println("Asia/Shanghai:" + sdf.format(date));

		return sdf.format(date);
	

然后发现有一条数据在数据库中 时间为

2022-03-24 16:00:00.000Z

转换出来的时间为

2022-03-25 24:00:00

与期望值不符合

实际上期望的值应该为

2022-03-25 00:00:00

原因

使用的时间格式化 配置错误导致的。

kk代表的如果有 包含有24的时间显示格式

具体规则如下:

h am/pm 中的小时数(1-12)
H 一天中的小时数(0-23)
k 一天中的小时数(1-24)
K am/pm 中的小时数(0-11)

以上是关于遇到的问题---java---使用SimpleDateFormat进行时区加8小时后出现24点的数据,导致时间异常无法入库的主要内容,如果未能解决你的问题,请参考以下文章

Java——获取n个工作日后的日期(这里只除去周末)

XML解析之SAX解析技术案例

------------------------------------日期之间的转换

比较 2(纪元)次,如果一个比另一个更新

修改日期,查看文件是否被修改

使用 JOOQ 在 java.sql.Timestamp 和 java.time.Instant 之间转换时遇到问题