/**
* @ClassName SplitDateUtil
* @Description TODO
* @Author wushaopei
* @Date 2019/11/3 23:23
* @Version 1.0
*/import org.junit.Test;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
/**
* 切割时间工具类:把一个时间区间,按照月份拆成不同的区间
* @author huangyin
*
*/
public class SplitDateUtil {public static void main(String[] args) {
List list = SplitDateUtil.getKeyValueForDate("2015-08-23","2016-06-10");
// List list = SplitDateUtil.getKeyValueForDate("2017-08-23", "2017-08-30");
System.out.println("开始日期--------------结束日期");
for(KeyValueForDate date : list){
System.out.println(date.getStartDate()+"-----"+date.getEndDate());
}
}public static List getKeyValueForDate(String startDate,String endDate) {
List list = null;
try {
list = new ArrayList();
String firstDay = "";
String lastDay = "";
Date d1 = new SimpleDateFormat("yyyy-MM-dd").parse(startDate);
// 定义起始日期Date d2 = new SimpleDateFormat("yyyy-MM-dd").parse(endDate);
// 定义结束日期Calendar dd = Calendar.getInstance();
// 定义日期实例
dd.setTime(d1);
// 设置日期起始时间
Calendar cale = Calendar.getInstance();
Calendar c = Calendar.getInstance();
c.setTime(d2);
int startDay = d1.getDate();
// 23
System.out.println("startDay = " + startDay);
int endDay = d2.getDate();
// 10
System.out.println("endDay = " + endDay);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
KeyValueForDate keyValueForDate = null;
while (dd.getTime().before(d2)) {// 判断是否到结束日期
keyValueForDate = new KeyValueForDate();
cale.setTime(dd.getTime());
if(dd.getTime().equals(d1)){
cale.set(Calendar.DAY_OF_MONTH, dd
.getActualMaximum(Calendar.DAY_OF_MONTH));
lastDay = sdf.format(cale.getTime());
keyValueForDate.setStartDate(sdf.format(d1));
keyValueForDate.setEndDate(lastDay);
}else if(dd.get(Calendar.MONTH) == d2.getMonth() && dd.get(Calendar.YEAR) == c.get(Calendar.YEAR)){
cale.set(Calendar.DAY_OF_MONTH,1);
//取第一天
firstDay = sdf.format(cale.getTime());
keyValueForDate.setStartDate(firstDay);
keyValueForDate.setEndDate(sdf.format(d2));
}else {
cale.set(Calendar.DAY_OF_MONTH,1);
//取第一天
firstDay = sdf.format(cale.getTime());
cale.set(Calendar.DAY_OF_MONTH, dd
.getActualMaximum(Calendar.DAY_OF_MONTH));
lastDay = sdf.format(cale.getTime());
keyValueForDate.setStartDate(firstDay);
keyValueForDate.setEndDate(lastDay);
}
list.add(keyValueForDate);
dd.add(Calendar.MONTH, 1);
// 进行当前日期月份加1}if(endDay
【切割时间工具】
推荐阅读
- 即便学会了Markdown,也没想到还可以这么干 —> 学会==提高效率
- XUtils3.0 框架(工具类)
- 工具类|javabean、xml、json、map之间的相互转换
- Android|【常用工具类】DensityUtils(dp px 互相转换)
- 工具类|阿里巴巴java开发手册-嵩山版 下载
- javaweb|递归和泛型判断多级Map集合中get(key)==null问题