时间分割工具类
类名:DateUtils
主要功能:将传递的时间段按照每天, 每月或每年进行切割
方法名:getTimeRange
输入参数:
参数 | 参数类型 | 说明 |
---|---|---|
type | int | 分割类型(1 按年, 2 按月, 其他 按天) |
begin | Date | 起始时间 |
end | Date | 结束时间 |
返回值
返回值类型 | 说明 |
---|---|
List<DateRange> | list中每一个参数代表一个时间段 |
pojo类: DateRange
成员变量 | 参数类型 | 说明 |
---|---|---|
begin | Date | 开始时间 |
end | Date | 结束时间 |
代码:
工具类: import com.google.common.collect.Lists; import java.util.Calendar; import java.util.Date; import java.util.List; public class DateUtils { public static List<DateRange> getTimeRange(int type, Date begin, Date end){ if(type == 1){ // 按年切分 return splitDateRangeByYear(begin, end); }else if(type == 2){ // 按月切分 return splitDateRangeByMonth(begin, end); }else{ // 按天切分 return splitDateRangeByDay(begin, end); } } /** * 按天计算分隔 * * @param begin * @param end * @return */ private static List<DateRange> splitDateRangeByDay(Date begin, Date end) { long time = end.getTime() - begin.getTime(); if (time <= 0) { return Lists.newArrayList(); } Calendar calendar = Calendar.getInstance(); calendar.setTime(begin); List<DateRange> list = Lists.newArrayList(); DateRange range = new DateRange(); range.setBegin(begin); while (true) { calendar.add(Calendar.DAY_OF_YEAR, 1); if (calendar.getTime().after(end)) { range.setEnd(end); list.add(range); break; } calendar.set(Calendar.HOUR_OF_DAY, 0); calendar.set(Calendar.MINUTE, 0); calendar.set(Calendar.SECOND, 0); calendar.set(Calendar.MILLISECOND, 0); //今天的开始 Date tmpBeginTime = calendar.getTime(); //计算出上一天的最后一秒