Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- function($startDate, $trainingCount, $schedule)
- function calculateDays($startDate, $trainingCount, array $schedule){
- $start_date = date("d-m-y", $startDate);
- $training_count = (int)$trainingCount;
- foreach ($schedule as $day) {
- switch ($day) {
- case '1':
- $arr[1] = "Mon";
- break;
- case '2':
- $arr[2] = "Tue";
- break;
- case '3':
- $arr[3] = "Wed";
- break;
- case '4':
- $arr[4] = "Thu";
- break;
- case '5':
- $arr[5] = "Fri";
- break;
- case '6':
- $arr[6] = "Sat";
- break;
- case '7':
- $arr[7] = "Sun";
- break;
- }
- }
- }
- количество тренировок всего/количество тренировок в неделю
- 10 тренировок | 3 раза в неделю | 10 / 3 = 3.1 => 3 полных недели + 1 тренька
- (количество тренировок всего - количество тренировок на этой неделе)/количество тренировок в неделю
- 10 тренировок | 3 раза в неделю (пн, ср, пт) | сегодня среда
- следовательно
- (10 - 2) / 3 = 8 / 3 = 2.1 => 2 полных недели + 1 тренька
- (7 - кол-во дней до сегодняшнего дня) +
- (кол-во полных недель * 7) +
- (кол-во дней до последней тренировки в последнюю неделю)
- $daysOfWeek = [1,2,3,4,5,6,7];
- $daysOfTraining = [1,3,5];
- $wholeNumber = 3; // целые недели
- $remainder = 1; // остаточные тренировки
- // так как сегодня воскресенье, 7 день недели, значит вычитаем 7
- (7 - 7) +
- // 3 полные недели по 7 дней в каждой
- ($wholeNumber * 7) +
- // количество дней до последней тренировки
- (array_search($daysOfTraining[$remainder - 1], $daysOfWeek) + 1)
- =
- 0 + 21 + 1
- =
- 22 дня
- $dateStart = '2017-04-23';
- $date = new DateTime($dateStart);
- $date->add(new DateInterval('P22D')); // P22D значит прибавить период 22 дня
- $dateEnd = $date->format('Y-m-d');
- echo $dateEnd;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement