当天24点,下一天的00:00:00
public static Date getCurrDay24(Date date){
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
calendar.set(Calendar.HOUR_OF_DAY, 24);
calendar.set(Calendar.MINUTE, 00);
calendar.set(Calendar.SECOND, 00);
Date zero = calendar.getTime();
return zero;
}
当天00:00:00
public static Date getCurrDayZero(Date date){
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
//calendar.set(Calendar.DAY_OF_MONTH, 0);
calendar.set(Calendar.HOUR_OF_DAY, 0);
calendar.set(Calendar.MINUTE, 0);
calendar.set(Calendar.SECOND, 0);
Date zero = calendar.getTime();
return zero;
}
踩过一个时间的坑, 数据库类型定义为varchar了,最开始存的是‘2016-01-01 00:00:00’, 后边存储的格式‘2017/01/01’
发现用unix_timestamp()后金额数据差了好几百万,想当然了认为00:00:00没啥业务,直接用了>, 实际换成‘2017/01/01’后数据差了一天,‘2017/01/01’ 等于‘2017-01-01 00:00:00’
一开始设置日期为2017.12.31 发现得到的居然是2018年2月1日,囧
Calendar cal2 = Calendar.getInstance();
cal2.set(2017, 11, 31, 24, 0, 0);
cal2.set(Calendar.MILLISECOND, 0);
Date d = cal2.getTime();
System.out.println(d);
cal2.set(2017, 12, 31, 24, 0, 0);
d = cal2.getTime();
System.out.println(d);
输出结果:
Mon Jan 01 00:00:00 CST 2018
Thu Feb 01 00:00:00 CST 2018