https://pastein.ru/t/BX

  скопируйте уникальную ссылку для отправки


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