Advertisement
Guest User

Untitled

a guest
Apr 23rd, 2017
50
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.21 KB | None | 0 0
  1. function($startDate, $trainingCount, $schedule)
  2.  
  3. function calculateDays($startDate, $trainingCount, array $schedule){
  4.  
  5. $start_date = date("d-m-y", $startDate);
  6. $training_count = (int)$trainingCount;
  7.  
  8.  
  9. foreach ($schedule as $day) {
  10. switch ($day) {
  11. case '1':
  12. $arr[1] = "Mon";
  13. break;
  14.  
  15. case '2':
  16. $arr[2] = "Tue";
  17. break;
  18.  
  19. case '3':
  20. $arr[3] = "Wed";
  21. break;
  22.  
  23. case '4':
  24. $arr[4] = "Thu";
  25. break;
  26.  
  27. case '5':
  28. $arr[5] = "Fri";
  29. break;
  30.  
  31. case '6':
  32. $arr[6] = "Sat";
  33. break;
  34.  
  35. case '7':
  36. $arr[7] = "Sun";
  37. break;
  38. }
  39. }
  40.  
  41.  
  42. }
  43.  
  44. количество тренировок всего/количество тренировок в неделю
  45.  
  46. 10 тренировок | 3 раза в неделю | 10 / 3 = 3.1 => 3 полных недели + 1 тренька
  47.  
  48. (количество тренировок всего - количество тренировок на этой неделе)/количество тренировок в неделю
  49.  
  50. 10 тренировок | 3 раза в неделю (пн, ср, пт) | сегодня среда
  51. следовательно
  52. (10 - 2) / 3 = 8 / 3 = 2.1 => 2 полных недели + 1 тренька
  53.  
  54. (7 - кол-во дней до сегодняшнего дня) +
  55. (кол-во полных недель * 7) +
  56. (кол-во дней до последней тренировки в последнюю неделю)
  57.  
  58. $daysOfWeek = [1,2,3,4,5,6,7];
  59. $daysOfTraining = [1,3,5];
  60.  
  61. $wholeNumber = 3; // целые недели
  62. $remainder = 1; // остаточные тренировки
  63.  
  64. // так как сегодня воскресенье, 7 день недели, значит вычитаем 7
  65. (7 - 7) +
  66. // 3 полные недели по 7 дней в каждой
  67. ($wholeNumber * 7) +
  68. // количество дней до последней тренировки
  69. (array_search($daysOfTraining[$remainder - 1], $daysOfWeek) + 1)
  70. =
  71. 0 + 21 + 1
  72. =
  73. 22 дня
  74.  
  75. $dateStart = '2017-04-23';
  76. $date = new DateTime($dateStart);
  77. $date->add(new DateInterval('P22D')); // P22D значит прибавить период 22 дня
  78. $dateEnd = $date->format('Y-m-d');
  79.  
  80. echo $dateEnd;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement