Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [Rozwiazane][PHP] Numer dnia miesiąca (poniedziałek danego tygodnia)
Forum PHP.pl > Forum > Przedszkole
Hpsi
Witam, piszę ponieważ już totalnie ogłupiałem, piszę kalendarz i kombinuje już dobre pare godzin, by dobrze mi skrypt odczytał numer dnia miesiąca dla naprzykład poniedzaiłek 23 tygodnia roku 2011.
Jakieś porady jak to zrobić?
usb2.0
http://php.net/manual/en/function.date.php

najłatwiej zrobić switcha do dni tygodnia coś w stylu
Kod
switch(date("D")){
  case "Mon": echo "Poniedziałek" break;
}


który dzień miesiąca to date("d")
Hpsi
Funkcja może się przydać do robienia np w CRM widoku kalendarza na dni robocze



Może komuś się przyda ta funkcja.
podajemy jako argumenty dzien, miesiac, rok

funkcja zwraca nam dni robocze (od poniedzialku do piatku)
funkcja nie uwzglednia świąt etc. po prostu zwraca dni od pn-pt .

Może jest jakiś gotowy sposób na zrobienie tego - lecz ja nie znalazłem, dlatego podaję tutaj moją inwencje twórczą smile.gif
  1.  
  2. public function days($day, $month , $year)
  3. {
  4. if(date('N', mktime(0,0,0,$month,$day,$year) <> 1))
  5. {
  6. $dayOfWeek = date('N', mktime(0,0,0,$month,$day,$year));
  7. if($day-$dayOfWeek < 1)
  8. {
  9. if($month == 1)
  10. {
  11. $lastMonth = date('t', mktime(0,0,0,12,1,$year-1));
  12. $year -= 1;
  13.  
  14. }
  15. else
  16. $lastMonth = date('t', mktime(0,0,0,$month-1,1,$year));
  17. $day = $lastMonth-(date('d', mktime(0,0,0,$month,$day,$year))-$day);
  18. if($month > 1)
  19. $month -= 1;
  20. else
  21. $month = 12;
  22. }
  23. $day = $day-date('N', mktime(0,0,0,$month,$day,$year))+1;
  24. }
  25. for($x=1;$x<6;$x++)
  26. {
  27. if($day > date('t', strtotime($day.'-'.$month.'-'.$year)))
  28. {
  29. $day=1;
  30. if($month == 12)
  31. {
  32. $month = 1;
  33. $year++;
  34. }
  35. else
  36. $month++;
  37. }
  38. $ret[]= array('day' => $day, 'month' => $month, 'year' => $year);
  39. $day++;
  40. }
  41. return $ret;
  42. }
  43.  


kolejna funckja to linów +/- tydzien
jako parmetry funkcji ustawiamy wynik z funkcji days (pierwszy wpis do tablic) dzien, miesiac, rok ostanim parmetrem jest past jesli chcemy by zwrocil link do przodu (o 1 tydzien) ustawiamy go na 1;

  1. public function makeDateLink($day, $month, $year, $past = 0)
  2. {
  3.  
  4. if($past == 0)
  5. {
  6. if($day-7 > 0)
  7. return $this->engine->router->clipLink(0, $day-7, $month, $year);
  8. else
  9. {
  10. if($month == 1)
  11. {
  12. $lastMonth = date('t',mktime(0,0,0,12,1,$year-1));
  13. $year--;
  14. }
  15. else
  16. $lastMonth = date('t',mktime(0,0,0,$month-1,1,$year));
  17. $odejmnij = abs($day-7);
  18. $day = $lastMonth;
  19. if($month > 1)
  20. $month -= 1;
  21. else
  22. $month = 12;
  23. return $this->engine->router->clipLink(0, $day-$odejmnij, $month, $year);
  24. }
  25. }
  26. else
  27. {
  28. $daysOfMonth = date('t', strtotime($day.'-'.$month.'-'.$year));
  29. if($day+7>$daysOfMonth)
  30. {
  31. if($month == 12)
  32. {
  33. $nextMonth = date('t',mktime(0,0,0,1,1,$year+1));
  34. $year += 1;
  35. }
  36. else
  37. $nextMonth = date('t', strtotime($day.'-'.$month.'-'.$year));
  38.  
  39. $day = abs($nextMonth-($day+7));
  40. if($month == 12)
  41. $month =1;
  42. else
  43. $month++;
  44. }
  45. else
  46. $day += 7;
  47. return $this->engine->router->clipLink(0, $day, $month, $year);
  48. }


jeśli ktoś ma uwagi, proszę powiedzieć smile.gif

temat można zamknąć gdyż działa mi już wszystko, rozwiązanie problemu pokazane wyżej wink.gif
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.