Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [Rozwiazane][PHP] Numer dnia miesiąca (poniedziałek danego tygodnia)
Hpsi
post
Post #1





Grupa: Zarejestrowani
Postów: 483
Pomógł: 50
Dołączył: 15.03.2005
Skąd: Poznań

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


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ć?

Ten post edytował Hpsi+ 17.05.2011, 14:11:48
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 2)
usb2.0
post
Post #2





Grupa: Zarejestrowani
Postów: 341
Pomógł: 25
Dołączył: 28.09.2008
Skąd: Lublin

Ostrzeżenie: (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")

Ten post edytował usb2.0 17.05.2011, 08:39:01
Go to the top of the page
+Quote Post
Hpsi
post
Post #3





Grupa: Zarejestrowani
Postów: 483
Pomógł: 50
Dołączył: 15.03.2005
Skąd: Poznań

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


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ą (IMG:style_emoticons/default/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ć (IMG:style_emoticons/default/smile.gif)

temat można zamknąć gdyż działa mi już wszystko, rozwiązanie problemu pokazane wyżej (IMG:style_emoticons/default/wink.gif)

Ten post edytował Hpsi+ 17.05.2011, 13:17:01
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: 22.09.2025 - 21:31