项目中有一个增加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