如2018-04-12到2018-04-24的list
按照周六周日拆分如下:
2018-04-12到2018-04-13
2018-04-14到2018-04-15
2018-04-16到2018-04-20
2018-04-21到2018-04-22
2018-04-23到2018-04-24
public static void main(String[] args) {
Date d1 = new Date(2018-1900,03,12);
Date d2 = new Date(2018-1900,03,13);
Date d3 = new Date(2018-1900,03,14);
Date d4 = new Date(2018-1900,03,15);
Date d5 = new Date(2018-1900,03,16);
Date d6 = new Date(2018-1900,03,17);
Date d7 = new Date(2018-1900,03,18);
Date d8 = new Date(2018-1900,03,19);
Date d9 = new Date(2018-1900,03,20);
Date d10 = new Date(2018-1900,03,21);
Date d11 = new Date(2018-1900,03,22);
List<Date> l1 = new ArrayList<Date>();
l1.add(d1);
l1.add(d2);
l1.add(d3);
l1.add(d4);
l1.add(d5);
l1.add(d6);
l1.add(d7);
l1.add(d8);
l1.add(d9);
l1.add(d10);
l1.add(d11);
int j = 0;
for(int i = 0;l1.size()>i;i++){
Date currentDate=l1.get(i);
Calendar cal = Calendar.getInstance();
cal.setTime(currentDate);
if(cal.get(Calendar.DAY_OF_WEEK)==Calendar.SATURDAY){
List<Date> subList = l1.subList(j, i);
j=i;
System.out.println(j);
System.out.println(subList);
}else if(cal.get(Calendar.DAY_OF_WEEK)==Calendar.SUNDAY){
int k = i+1;
List<Date> subList = l1.subList(j, k);
System.out.println(subList);
j=k;
System.out.println(j);
}
}
}
这个是后台打印结果
将List遍历按索引取出,根据Calendar判断是否为周六,如果是截取索引为0到这个日期为周六的索引,再次从这个索引往下判断,如果是周天则截取,这样一直循环就可以了
Date currentDate=new Date();
Calendar cal = Calendar.getInstance();
cal.setTime(currentDate);
if(cal.get(Calendar.DAY_OF_WEEK)==Calendar.SATURDAY||cal.get(Calendar.DAY_OF_WEEK)==Calendar.SUNDAY){
}这个可以判断周六周日
public class GetTwoList {
public static void main(String[] args) throws ParseException {
List<Date> dateList = new ArrayList<>();
//先初始化List<Date>
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
String tempStr = "2018-04-";
for(int i = 12;i<=24;i++){
String dateTemp = tempStr + String.valueOf(i);
dateList.add(format.parse(dateTemp));
}
//根据周六周日放在两个list里
List<Date> saturdayList = new ArrayList<>();
List<Date> sundayList = new ArrayList<>();
Calendar cal = Calendar.getInstance();
for(int i = 0; i< dateList.size();i++){
cal.setTime(dateList.get(i));
if(cal.get(Calendar.DAY_OF_WEEK)==Calendar.SATURDAY){
saturdayList.add(dateList.get(i));
}else if(cal.get(Calendar.DAY_OF_WEEK)==Calendar.SUNDAY){
sundayList.add(dateList.get(i));
}
}
System.out.println(saturdayList);
System.out.println(sundayList);
}
}
```public static void main(String[] args){
String sePattern = "-";
format = new SimpleDateFormat("yyyy"+sePattern+"MM"+sePattern+"dd");
List<Date> ds = getDateList("2018-4-12", "2018-4-24", sePattern);
Map<Integer, List<Date>> ms = getDateMap(ds, sePattern);
ms.forEach((key, value) -> {System.out.println(key +":"+ value);});
}
/**
* 判断当前日期是星期几
*
* @param pTime 修要判断的时间
* @return dayForWeek 判断结果
* @Exception 发生异常
*/
public static int dayForWeek(String pTime, String sePattern){
try {
format = new SimpleDateFormat("yyyy"+sePattern+"MM"+sePattern+"dd");
Calendar c = Calendar.getInstance();c.setTime(format.parse(pTime));
int dayForWeek = 0;
if(c.get(Calendar.DAY_OF_WEEK) == 1){
dayForWeek = 7;
}else{
dayForWeek = c.get(Calendar.DAY_OF_WEEK) - 1;
}
return dayForWeek;
} catch (ParseException e) {
e.printStackTrace();
return 0;
}
}
public static Map<Integer, List<Date>> getDateMap(List<Date> dates, String sePattern) {
format = new SimpleDateFormat("yyyy" + sePattern + "MM" + sePattern + "dd");
Map<Integer, List<Date>> map = new HashMap<Integer, List<Date>>();
List<Date> dateTempl = null;
// boolean flag = false;
if (dates != null) {
for (int i = 0; i < dates.size(); i++) {
String dstring = format.format(dates.get(i));
if (dayForWeek(dstring, sePattern) == 6) {
dateTempl = new ArrayList<Date>();
dateTempl.add(dates.get(i));
map.put(i, dateTempl);
// flag = true;
} else if (dayForWeek(dstring, sePattern) == 7) {
dateTempl.add(dates.get(i));
} else if (dayForWeek(dstring, sePattern) == 1) {
dateTempl = new ArrayList<Date>();
dateTempl.add(dates.get(i));
map.put(i, dateTempl);
// flag = true;
} else if (i == 0) {
dateTempl = new ArrayList<Date>();
dateTempl.add(dates.get(i));
map.put(i, dateTempl);
// flag = true;
} else {
dateTempl.add(dates.get(i));
}
// if (flag) {
// map.put(i, dateTempl);
// }
}
return map;
} else {
return null;
}
}
public static List<Date> getDateList(String dateFrom, String dateTo, String sePattern){
format = new SimpleDateFormat("yyyy" + sePattern + "MM" + sePattern + "dd");
List<Date> listd = new ArrayList<Date>();
try {
Calendar cldF = Calendar.getInstance();
Calendar cldT= Calendar.getInstance();
cldF.setTime(format.parse(dateFrom));
cldT.setTime(format.parse(dateTo));
while(cldF.before(cldT)){
listd.add(cldF.getTime());
cldF.add(Calendar.DAY_OF_MONTH, 1);
}
listd.add(cldT.getTime());
} catch (ParseException e) {
e.printStackTrace();
}
return listd;
}
输出换成这个:
for(List ld : ms.values()){
for(Date d : ld){
System.out.print(format.format(d) + " -> ");
}
System.out.println();
}
下面再加一个else if 判断最后一个索引如果不是周六周日 就从上一个索引截取到最后
else if(i == l1.size()-1 && cal.get(Calendar.DAY_OF_WEEK)!=Calendar.SATURDAY && cal.get(Calendar.DAY_OF_WEEK)!=Calendar.SUNDAY){
List<Date> subList = l1.subList(j, l1.size());
System.out.println(subList);
}