Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Liczba wspólnych dni w przedziale dat
Forum PHP.pl > Forum > PHP
emantuch
Witam,
nie mam pomysły,a nie nigdzie nie natknąłem sie jak mółbym wyciągnać z przedziału dat np.

1.01.2012 - 5.01.2012
3.01.2012 - 12.01.2012


Jak wyliczyć ilość wspólnych dni z takiego przedziału?

Jak rozwiązać sytuacje gdy są 3 przedziały:

1.01.2012 - 5.01.2012
3.01.2012 - 12.01.2012
11.01.2012 - 18.01.2012


Pomoże ktoś?
Pyton_000
Wygeneru sobie 3 tablice z dniami w przedziałach i zrób intersection
emantuch
Cytat(Pyton_000 @ 27.11.2015, 12:13:58 ) *
Wygeneru sobie 3 tablice z dniami w przedziałach i zrób intersection

Dzięki wielkie za podpowiedź smile.gif

Jako, że sam lubię gdzieś tam odnajdywać jakieś skrypty na forach, wrzucam kod który rozwiązał mój problem, może komuś kiedyś się przyda. smile.gif

  1. <?php
  2. $a1 = "2015-10-01";
  3. $a2 = "2015-10-15";
  4. $b1 = "2015-10-03";
  5. $b2 = "2015-10-18";
  6.  
  7. $intersection = getIntersection($a1,$a2,$b1,$b2);
  8. if($intersection === false)
  9. {
  10. echo 'Bład w datach;
  11. }
  12. else
  13. {
  14. $wyciag1 = date('Y-m-d', $intersection['start']);
  15. $wyciag2 = date('Y-m-d', $intersection['end']);
  16. echo 'From '.date('Y-m-d', $intersection['start']).' till '.date('Y-m-d', $intersection['end']);
  17. }
  18.  
  19. function getIntersection($a1,$a2,$b1,$b2)
  20. {
  21. $a1 = strtotime($a1);
  22. $a2 = strtotime($a2);
  23. $b1 = strtotime($b1);
  24. $b2 = strtotime($b2);
  25. if($b1 > $a2 || $a1 > $b2 || $a2 < $a1 || $b2 < $b1)
  26. {
  27. return false;
  28. }
  29. $start = $a1 < $b1 ? $b1 : $a1;
  30. $end = $a2 < $b2 ? $a2 : $b2;
  31.  
  32. return array('start' => $start, 'end' => $end);
  33. }
  34.  
  35. ?>


To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.