以下方法都可以直接调用,不用担心
方法1
/**
* period计算月数
* @param startDate 开始时间
* @param endDate 结束时间
*/
@ApiOperation("月数获取")
public static int mouthsBetween(Date startDate, Date endDate) {
Calendar startCalendar = new GregorianCalendar();
startCalendar.setTime(startDate);
Calendar endCalendar = new GregorianCalendar();
endCalendar.setTime(endDate);
//计算月份和年份
int diffYear = endCalendar.get(Calendar.YEAR) - startCalendar.get(Calendar.YEAR);
int diffMonth = diffYear * 12 + endCalendar.get(Calendar.MONTH) -
startCalendar.get(Calendar.MONTH);
System.out.println("相差月份 "+diffMonth+" 相差年份 "+diffYear);
return diffMonth;
}
方法2
/**
* period计算天数
* @param startDate 开始时间
* @param endDate 结束时间
*/
@ApiOperation("天数获取")
public static long daysBetween(Date startDate, Date endDate) {
long betweenDate = (endDate.getTime() - startDate.getTime())/(60*60*24*1000);
return betweenDate;
}
方法3
/**
* period计算小时
* @param startDate 开始时间
* @param endDate 结束时间
*/
@ApiOperation("小数获取")
public static long hoursBetween(Date startDate, Date endDate) {
long betweenDate = (endDate.getTime() - startDate.getTime())/(60*60*1000);
return betweenDate;
}
方法4
以下方法可直接调用,显示的数据格式
2020-1-11 01:00:00 2020-1-11 01:59:59
2020-1-11 02:00:00 2020-1-11 02:59:59
2020-1-11 03:00:00 2020-1-11 03:59:59
/**
* 小时的拼接
* @param startDate 开始时间
* @param endDate 结束时间
*/
@ApiOperation("小时的拼接")
public static List
Exception {
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
SimpleDateFormat simpleDateFormat1 = new SimpleDateFormat("yyyy-MM-dd HH");
//date1 转换以(2020-01-11 10:00:00)展示
Date date1 = simpleDateFormat1.parse(startDate);
String start=simpleDateFormat.format(date1);
Date date2 = simpleDateFormat.parse(endDate);
//初始时间拼接 date1(2020-01-11 10:00:00),initialTime(2020-01-11 10:59:59)
List dateList = new ArrayList
Calendar initialCalendar = Calendar.getInstance();
List tlist=new ArrayList
initialCalendar.setTime(date1);
initialCalendar.add(Calendar.MINUTE, 59);
initialCalendar.add(Calendar.SECOND, 59);
Date initialDate = initialCalendar.getTime();
String initial=simpleDateFormat.format(initialDate);
tlist.add(start);
tlist.add(initial);
dateList.add(tlist);
//计算时间
Interval interval = new Interval(date1.getTime(),date2.getTime());
Period period = interval.toPeriod();
Integer hour=period.getHours();
//获取24内的各时间点,可能跨天
for (int i=0; i List timeList=new ArrayList //给当前时间加一秒 initialCalendar.add(Calendar.SECOND, 1); Date d1=initialCalendar.getTime(); //转成时间转成字符串固定格式 String str1=simpleDateFormat.format(d1); //给当前时间加59分59秒 initialCalendar.add(Calendar.MINUTE, 59); initialCalendar.add(Calendar.SECOND, 59); Date d2 = initialCalendar.getTime(); //注意时间转换问题 Date replaceTime=d2; String str2=simpleDateFormat.format(replaceTime); timeList.add(str1); timeList.add(str2); //System.out.println("添加到数组中的数据: "+timeList); //为下一个时间段 设置初始值 initialCalendar.setTime(d2); dateList.add(timeList); } return dateList; } 方法5 以下方法可直接调用,显示的数据格式 2020-1-11 00:00:00 2020-1-11 23:59:59 2020-1-12 00:00:00 2020-1-12 23:59:59 2020-1-13 00:00:00 2020-1-13 23:59:59 /** * 天数的拼接 * @param startDate 开始时间 * @param endDate 结束时间 */ @ApiOperation("天数的拼接") public static List Exception { SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); SimpleDateFormat simpleDateFormat1 = new SimpleDateFormat("yyyy-MM-dd"); //date1 转换以(2020-01-11 00:00:00)展示 Date date1 = simpleDateFormat1.parse(startDate); String start=simpleDateFormat.format(date1); Date date2 = simpleDateFormat.parse(endDate); //startDate1为准确计算天数 Date startDate1 = simpleDateFormat.parse(startDate); long today=daysBetween(startDate1,date2); //初始时间拼接 date1(2020-01-11 00:00:00),initialTime(2020-01-11 23:59:59) List dateList = new ArrayList Calendar initialCalendar = Calendar.getInstance(); //天数为1 List tlist = new ArrayList initialCalendar.setTime(date1); initialCalendar.add(Calendar.HOUR, 23); initialCalendar.add(Calendar.MINUTE, 59); initialCalendar.add(Calendar.SECOND, 59); Date initialDate = initialCalendar.getTime(); String initial = simpleDateFormat.format(initialDate); tlist.add(start); tlist.add(initial); dateList.add(tlist); //获取24内的各时间点,可能跨天 System.out.println("天数是 " + today); for (int i = 0; i < today; i++) { List timeList = new ArrayList //给当前时间加一秒 initialCalendar.add(Calendar.SECOND, 1); Date d1 = initialCalendar.getTime(); //转成时间转成字符串固定格式 String str1 = simpleDateFormat.format(d1); //给当前时间加23时59分59秒 initialCalendar.add(Calendar.HOUR, 23); initialCalendar.add(Calendar.MINUTE, 59); initialCalendar.add(Calendar.SECOND, 59); Date d2 = initialCalendar.getTime(); //注意时间转换问题 Date replaceTime = d2; String str2 = simpleDateFormat.format(replaceTime); timeList.add(str1); timeList.add(str2); //System.out.println("添加到数组中的数据: "+timeList); //为下一个时间段 设置初始值 initialCalendar.setTime(d2); dateList.add(timeList); } return dateList; } 方法6 以下方法可直接调用,显示的数据格式 2020-1-01 2020-1-31 2020-2-01 2020-2-29 2020-3-01 2020-3-31 /** * 月数的拼接 * @param startDate 开始时间 * @param endDate 结束时间 */ @ApiOperation("月数的拼接") public static List Exception { SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd"); SimpleDateFormat simpleDateFormat1 = new SimpleDateFormat("yyyy-MM"); //date1 转换以(2020-01-11 00:00:00)展示 Date date1 = simpleDateFormat1.parse(startDate); // String start=simpleDateFormat.format(date1); Date date2 = simpleDateFormat.parse(endDate); System.out.println("date1是 "+date1+"date2是 "+date2); //初始时间拼接 date1(2020-01-11 00:00:00),initialTime(2020-01-11 23:59:59) List dateList = new ArrayList Calendar initialCalendar = Calendar.getInstance(); List tlist=new ArrayList initialCalendar.setTime(date1); initialCalendar.add(Calendar.MONTH, 1); initialCalendar.add(Calendar.DATE, -1); Date initialDate = initialCalendar.getTime(); String initial=simpleDateFormat.format(initialDate); tlist.add(start); tlist.add(initial); dateList.add(tlist); //计算时间 Interval interval = new Interval(date1.getTime(),date2.getTime()); Period period = interval.toPeriod(); Integer months=period.getMonths(); //获取24内的各时间点,可能跨天 System.out.println("月数是 "+months); for (int i=0; i List timeList=new ArrayList //给当前时间加一秒 initialCalendar.add(Calendar.DATE, 1); Date d1=initialCalendar.getTime(); //转成时间转成字符串固定格式 String str1=simpleDateFormat.format(d1); //给当前时间加23时59分59秒 initialCalendar.add(Calendar.MONTH, 1); initialCalendar.add(Calendar.DATE, -1); Date d2 = initialCalendar.getTime(); //注意时间转换问题 Date replaceTime=d2; String str2=simpleDateFormat.format(replaceTime); timeList.add(str1); timeList.add(str2); //System.out.println("添加到数组中的数据: "+timeList); //为下一个时间段 设置初始值 initialCalendar.setTime(d2); dateList.add(timeList); } return dateList; }