在公司页面中需要掉一个第三方的接口,然后他们的接口不能跨天查询,网上也没搜到,索性自己写一个,写的不好,请多关照反正能用。
/**
* 把时间段拆分成以天为区分
*
* @param d1
* @param d2
* @return
*/
public static List<Map<String, Object>> getDateDifference(Date d1, Date d2) {
// 获取两天间隔多少天,如果间隔大于一天计算,否则就返回当前时间
int days = differentDays(d1, d2);
List<Map<String, Object>> dateList = new ArrayList<>();
if (days > 0) {
for (int i = 0; i <= days; i++) {
Map<String, Object> dateMap = new HashMap<>();
Calendar calendar = Calendar.getInstance();
calendar.setTime(d1);
calendar.add(Calendar.DATE, i);
Date d = calendar.getTime();
// 获取一天最开始的时间
dateMap.put("liveStartTime", getDayStart(d));
// 获取一天结束的时间
dateMap.put("liveEndTime", getDayEnd(d));
dateList.add(dateMap);
}
} else {
Map<String, Object> dateMap = new HashMap<>();
dateMap.put("liveStartTime", getDayStart(d1));
dateMap.put("liveEndTime", getDayEnd(d2));
dateList.add(dateMap);
}
return dateList;
}
/**
* date2比date1多的天数
*
* @param date1
* @param date2
* @return
*/
public static int differentDays(Date date1, Date date2) {
Calendar cal1 = Calendar.getInstance();
cal1.setTime(date1);
Calendar cal2 = Calendar.getInstance();
cal2.setTime(date2);
int day1 = cal1.get(Calendar.DAY_OF_YEAR);
int day2 = cal2.get(Calendar.DAY_OF_YEAR);
int year1 = cal1.get(Calendar.YEAR);
int year2 = cal2.get(Calendar.YEAR);
if (year1 != year2) //同一年
{
int timeDistance = 0;
for (int i = year1; i < year2; i++) {
if (i % 4 == 0 && i % 100 != 0 || i % 400 == 0) //闰年
{
timeDistance += 366;
} else //不是闰年
{
timeDistance += 365;
}
}
return (timeDistance + (day2 - day1) + 1);
} else //不同年
{
System.out.println("判断day2 - day1 : " + (day2 - day1));
return (day2 - day1);
}
}
/**
* 获取一天最开始的时间
*
* @param date
* @return
*/
public static Date getDayStart(Date date) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
//设置每天的最小小时
calendar.set(Calendar.HOUR_OF_DAY, calendar.getActualMinimum(Calendar.HOUR_OF_DAY));
//设置每小时最小分钟
calendar.set(Calendar.MINUTE, calendar.getActualMinimum(Calendar.MINUTE));
//设置每分钟最小秒
calendar.set(Calendar.SECOND, calendar.getActualMinimum(Calendar.SECOND));
return calendar.getTime();
}
/**
* 获取一天结束的时间
*
* @param date
* @return
*/
public static Date getDayEnd(Date date) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
//设置每天的最小小时
calendar.set(Calendar.HOUR_OF_DAY, calendar.getActualMaximum(Calendar.HOUR_OF_DAY));
//设置每小时最大分钟
calendar.set(Calendar.MINUTE, calendar.getActualMaximum(Calendar.MINUTE));
//设置每分钟最大秒
calendar.set(Calendar.SECOND, calendar.getActualMaximum(Calendar.SECOND));
return calendar.getTime();
}