|     java java   |    

当天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’

Calendar 设置时间是月是从0开始的,

一开始设置日期为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