Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] Obliczanie czasu (w godzinach), tylko dni robocze
8_pasarzer_NOSTR...
post
Post #1





Grupa: Zarejestrowani
Postów: 109
Pomógł: 0
Dołączył: 5.11.2009

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


Witam potrzebuje kod który obliczy ile godzin różnicy jest między dwoma datami (pole datatime) z uwzględnieniem weekendów, świąt i świąt ruchomych.
Np.
$od=2016-03-15 10:00:00
$do=2016-03-16 11:00:00
$wynik=25;

i żeby uwzględnił weekendy i świeta (ruchome też) co juz jest w funkcji.

$od=2016-03-15 10:00:00
$do=2016-03-18 11:00:00
Założmy że 16.03 i 17.03 to weekend $wynik=25;

Dotychczas do różnic w datach używałem funkcji nospor'a

  1. <?php
  2. function workDays($date1, $date2, $withStartDay = false) {
  3. $date1=strtotime($date1);
  4. $date2=strtotime($date2);
  5. if ($date2===$date1 && !$withStartDay) return 0;
  6. $char=1;
  7. if ($date1>$date2)
  8. {$datePom=$date1;$date1=$date2;$date2=$datePom;$char=-1;}
  9. $count=0;
  10. if (!$withStartDay)
  11. $date1=strtotime('+1 day',$date1);
  12. $date2=strtotime('+1 day',$date2);
  13. $lastYear = null;
  14. $hol=array('01-01','05-01','05-03','08-15','11-01','11-11','12-25','12-26');
  15. while ($date1<$date2) {
  16. $year = date('Y', $date1);
  17. if ($year !== $lastYear){
  18. $lastYear = $year;
  19. $easter = date('m-d', easter_date($year));
  20. $date = strtotime($year . '-' . $easter);
  21. $easterSec = date('m-d', strtotime('+1 day', $date));
  22. $cc = date('m-d', strtotime('+60 days', $date));
  23. $hol[8] = $easter;
  24. $hol[9] = $easterSec;
  25. $hol[10] = $cc;
  26. }
  27. $weekDay=date('w',$date1);
  28. $md = date('m-d',$date1);
  29. if (!($weekDay==0 || $weekDay==6 || in_array($md,$hol) || $year>2010 && $md=='01-06')) {
  30. $count++;
  31. }
  32. $date1=strtotime('+1 day',$date1);
  33. }
  34. $count*=$char;
  35. return $count;
  36. }
  37. ?>


Ale ona liczy pięknie ino same daty bez godzin. Czy idzie ja jakoś zamienic by spełaniałą załozenia z wstępu ?
Go to the top of the page
+Quote Post

Posty w temacie


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: 25.12.2025 - 14:10