java使用Calendar类生成时间保存到mysql数据库后时间多了一秒
@Test
public void testCalendar() {
Calendar calendar = Calendar.getInstance();
calendar.set(2019, 3, 29, 17, 33, 33);
Date time = calendar.getTime();
System.out.println(time.getTime());
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
String format = dateFormat.format(time);
System.out.println(format);
}
// 第一次结果
1556530413448
2019-04-29 17:33:33.448
// 第一次结果
1556530413817
2019-04-29 17:33:33.817
从上面的两次执行结果可以看出每次的毫秒数都是不一样的
MySQL数据库对于毫秒大于500的数据进行进位,所有就造成的MySQL中的时间多一秒
解决方案:calendar.set(Calendar.MILLISECOND, 0);
@Test
public void testCalendar() {
Calendar calendar = Calendar.getInstance();
calendar.set(2019, 3, 29, 17, 33, 33);
calendar.set(Calendar.MILLISECOND, 0);//设置毫秒数
Date time = calendar.getTime();
System.out.println(time.getTime());
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
String format = dateFormat.format(time);
System.out.println(format);
}
// 第一次结果
1556530413000
2019-04-29 17:33:33.000
// 第一次结果
1556530413000
2019-04-29 17:33:33.000
设置毫秒数后每一次生成的时间都是一样的