写在前面
项目功能测试, 日期格式转换出现个诡异的问题, 转换后的时间总是和系统当前时间相差8小时, 问题是另一个项目和这个代码完全一样, DateUtils.java, 包括formatDate()方法, 可是结果让我郁闷半天.
测试代码
public static void main(String[] args) {
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date = new Date();
String s = DateUtils.formatDate(date, Constants.DD_MM_YYYY_HH_MM_SS_DOT);
String s1 = DateUtils.formatDate(date, Constants.SIMPLE_YYYY_MM_DD_HH_MM_SS_SSS);
String s2 = DateUtils.formatDate(date, "yyyy-MM-dd HH:mm:ss");
System.out.println(s);
System.out.println(s1);
System.out.println(s2);
System.out.println(simpleDateFormat.format(date));
}
输出结果
看下面的输出时间, 直接蒙了...
17.10.2019 11:03:49
20191017110349987
2019-10-17 11:03:49
2019-10-17 19:03:49
原因分析
原因
导错 DateUtils工具类的包, 本应想导入的是自定义的DateUtils.java, 路径为import org.jeecgframework.core.util.DateUtils;
实际导入的是import org.apache.http.client.utils.DateUtils;
查看代码
org.apache.http.client.utils.DateUtils;取出的时间是GMT, 因此取出的时间总是比系统时间(北京时间)小8小时. GMT+8才是北京时间.
重新导包后正常结果:
sms_txt中的时间是转为String类型后的日期时间.
小结
开发工具虽然好用, 但import时还是要细心.