以下方法都可以直接调用,不用担心
方法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<String> getTodayHours(String startDate,String endDate) throws
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<String>();
Calendar initialCalendar = Calendar.getInstance();
List tlist=new ArrayList<String>();
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<hour; i++) {
List timeList=new ArrayList<String>();
//给当前时间加一秒
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<String> getTodays(String startDate,String endDate) throws
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<String>();
Calendar initialCalendar = Calendar.getInstance();
//天数为1
List tlist = new ArrayList<String>();
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<String>();
//给当前时间加一秒
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<String> getMonths(String startDate,String endDate) throws
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<String>();
Calendar initialCalendar = Calendar.getInstance();
List tlist=new ArrayList<String>();
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<months; i++) {
List timeList=new ArrayList<String>();
//给当前时间加一秒
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;
}