day_1_flag = ON
day_2_flag = ON
day_3_flag = OFF
day_4_flag = ON
day_5_flag = OFF
day_6_flag = ON
day_7_flag = ON
day_1_HH = 13; day_1_MM = 59;
day_2_HH = 13; day_2_MM = 59;
day_3_HH = 13; day_3_MM = 59;
day_4_HH = 13; day_4_MM = 59;
day_5_HH = 13; day_5_MM = 59;
day_6_HH = 13; day_6_MM = 59;
day_7_HH = 13; day_7_MM = 59;
int yyyy = 0;
int mm = 0;
int dd = 0;
int hh = 0;
int nn = 0;
int dayOfWeek = 0;
date dateFrom = new Date(); // текущая дата время
date dateTo = new Date(); // текущая дата время
Calendar c = Calendar.getInstance(); // объект календарь
int f = 0;
while (f = 0) {
// день недели по дате, часы, минуты
c.setTime(dateTo);
yyyy = c.get(Calendar.YEAR);
mm = c.get(Calendar.MONTH);
dd = c.get(Calendar.DAY_OF_MONTH);
hh = c.get(Calendar.HOUR_OF_DAY);
nn = c.get(Calendar.MINUTE);
dayOfWeek = c.get(Calendar.DAY_OF_WEEK);
switch dayOfWeek {
case 1: { if (day_1_flag == ON && hh >= day_1_HH && day_1_MM >= mm) f = 1 }
case 2: { if (day_2_flag == ON && hh >= day_2_HH && day_2_MM >= mm) f = 2 }
case 3: { if (day_3_flag == ON && hh >= day_3_HH && day_3_MM >= mm) f = 3 }
case 4: { if (day_4_flag == ON && hh >= day_4_HH && day_4_MM >= mm) f = 4 }
case 5: { if (day_5_flag == ON && hh >= day_5_HH && day_5_MM >= mm) f = 5 }
case 6: { if (day_6_flag == ON && hh >= day_6_HH && day_6_MM >= mm) f = 6 }
case 6: { if (day_7_flag == ON && hh >= day_7_HH && day_7_MM >= mm) f = 7 }
}
// собираем новую дату dateTo если сработал флаг
if (f > 0) {
c.set(Calendar.YEAR, yyyy);
c.set(Calendar.MONTH, mm);
c.set(Calendar.DAY_OF_MONTH, dd);
switch f {
case 1: { c.set(Calendar.HOUR_OF_DAY, day_1_HH); c.set(Calendar.MINUTE, day_1_MM); }
case 2: { c.set(Calendar.HOUR_OF_DAY, day_2_HH); c.set(Calendar.MINUTE, day_2_MM); }
case 3: { c.set(Calendar.HOUR_OF_DAY, day_3_HH); c.set(Calendar.MINUTE, day_3_MM); }
case 4: { c.set(Calendar.HOUR_OF_DAY, day_4_HH); c.set(Calendar.MINUTE, day_4_MM); }
case 5: { c.set(Calendar.HOUR_OF_DAY, day_5_HH); c.set(Calendar.MINUTE, day_5_MM); }
case 6: { c.set(Calendar.HOUR_OF_DAY, day_6_HH); c.set(Calendar.MINUTE, day_6_MM); }
case 6: { c.set(Calendar.HOUR_OF_DAY, day_7_HH); c.set(Calendar.MINUTE, day_7_MM); }
}
dateTo = c.getInstance().getTime();
// выход из цикла
break;
}
// продолжение цикла = дата +1 день
dateTo = c.add(Calendar.DATE, 1);
}
// Здесь берем разница между DateTo и DateFrom