Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Liczba wspólnych dni w przedziale dat
emantuch
post
Post #1





Grupa: Zarejestrowani
Postów: 22
Pomógł: 1
Dołączył: 23.09.2015

Ostrzeżenie: (0%)
-----


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ś?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 3)
trueblue
post
Post #2





Grupa: Zarejestrowani
Postów: 6 806
Pomógł: 1828
Dołączył: 11.03.2014

Ostrzeżenie: (0%)
-----


https://www.google.pl/search?q=php+intersection+date+ranges
Go to the top of the page
+Quote Post
Pyton_000
post
Post #3





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

Ostrzeżenie: (0%)
-----


Wygeneru sobie 3 tablice z dniami w przedziałach i zrób intersection
Go to the top of the page
+Quote Post
emantuch
post
Post #4





Grupa: Zarejestrowani
Postów: 22
Pomógł: 1
Dołączył: 23.09.2015

Ostrzeżenie: (0%)
-----


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ź (IMG:style_emoticons/default/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. (IMG:style_emoticons/default/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. ?>


Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 24.08.2025 - 16:12