Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Wyświetlanie daty pomijając weekend
Forum PHP.pl > Forum > PHP
vodkon
Witam jak wyświetlić datę bez weekendów o jeden dzień do tyłu, teraźniejszy o ile nie jest to sobota, niedziela, jeden do przodu, i dwa do przodu tylko tak aby nie była to sobota lub niedziela tylko np. mamy poniedziałek to wyświetli tak Piątek | Poniedziałek | Wtorek | Środa a jak mamy czwartek to Środa | Czwartek | Piątek | Poniedziałek
a jeśli jest niedziela to Piątek | Poniedziałek | Wtorek | Środa zależy mi na tym aby ktoś rozgryzł jak to zrobić i żeby wyświetlało go się w taki sposób
echo $wczoraj.' | '.$dziś.' | '.$jutro.' | '.$pojutrze;
oraz tak samo datę w formacie rrrr-mm-dd każdy
Michael2318
No dobra, a co jeśli dziś jest sobota? Co ma Ci wtedy niby zwrócić pod zmienną $dzis ?

ogolnie schemat taki:

Cytat
zakladajac, ze dzis jest sobota:
wczoraj: piatek -1
dzis: sobota
jutro: poniedzialek +2
pojutrze: wtorek +1

zakladajac, ze dzis jest niedziela:
wczoraj: piatek -2
dzis: niedziela
jutro: poniedzialek +1
pojutrze: wtorek +1

zakladajac, ze dzis jest poniedzialek:
wczoraj: piatek -2
dzis: poniedzialek
jutro: wtorek +1
pojutrze: sroda +1

zakladajac, ze dzis jest wtorek:
wczoraj: poniedzialek -1
dzis: wtorek
jutro: sroda +1
pojutrze: czwartek +1

zakladajac, ze dzis jest sroda:
wczoraj: wtorek -1
dzis: sroda
jutro: czwartek +1
pojutrze: piatek +1

zakladajac, ze dzis jest czwartek
wczoraj: sroda -1
dzis: czwartek
jutro: piatek +1
pojutrze: poniedzialek +3

zakladajac, ze dzis jest piatek
wczoraj: czwartek -1
dzis: piatek
jutro: poniedzialek +2
pojutrze: wtorek +1

Do tego funkcja date, poniewaz:
  1. date('w', time());


zwraca Ci obecny dzień tygodnia (liczony od 0 do 6). Teraz to masz czystą matematykę:
  1. if ( date('w', time()) == 2 )
  2. {
  3. $wczoraj = 'wtorek';
  4. $dzis = 'sroda';
  5. $jutro = 'czwartek';
  6. $pojutrze = 'piatek';
  7. }


oczywiscie nazwy dni mozna zapisac do tablicy. Zadanie proste, poniewaz na upartego mozesz na sztywno wcisnac kilka warunkow i pojdzie, wiec nawet nie majac wiedzy, bazujac na podstawach powinienes dac rade.
vodkon
może się komuś przyda

  1. $wd_dtygpl = array('Monday' => 'Poniedziałek', 'Tuesday' => 'Wtorek', 'Wednesday' => 'Środa', 'Thursday' => 'Czwartek', 'Friday' => 'Piątek');
  2. if( date('w', time()) == 6){
  3.  
  4. $datadzis = strtotime("next Monday");$dataTuesday = strtotime("next Tuesday");
  5. $dataWednesday = strtotime("next Wednesday");$datalast = strtotime("last Friday");
  6. $zdata0=date("Y-m-d", $datadzis);$zdata1=date("Y-m-d", $datalast);
  7. $zdata2=date("Y-m-d", $dataTuesday);$zdata3=date("Y-m-d", $dataWednesday);
  8. }elseif( date('w', time()) == 0){
  9. $datadzis = strtotime("next Monday");$dataTuesday = strtotime("next Tuesday");
  10. $dataWednesday = strtotime("next Wednesday");$datalast = strtotime("last Friday");
  11. $zdata0=date("Y-m-d", $datadzis);$zdata1=date("Y-m-d", $datalast);
  12. $zdata2=date("Y-m-d", $dataTuesday);$zdata3=date("Y-m-d", $dataWednesday);
  13. }elseif(date('w', time()) == 5){
  14. $dataMonday = strtotime("next Monday");
  15. $dataTuesday= strtotime("next Tuesday");$datalast = strtotime("-1 day");
  16. $zdata0=date("Y-m-d");$zdata1=date("Y-m-d", $datalast);
  17. $zdata2=date("Y-m-d", $dataMonday);$zdata3=date("Y-m-d", $dataTuesday);
  18. }elseif(date('w', time()) == 1){
  19. $dataWednesday = strtotime("next Wednesday");
  20. $dataTuesday= strtotime("next Tuesday");$datalast = strtotime("last Friday");
  21. $zdata0=date("Y-m-d");$zdata1=date("Y-m-d", $datalast);
  22. $zdata2=date("Y-m-d", $dataTuesday);$zdata3=date("Y-m-d", $dataWednesday);
  23. }elseif(date('w', time()) == 4){
  24. $dataMonday = strtotime("next Monday");
  25. $datanext = strtotime("+1 day");$datalast = strtotime("-1 day");
  26. $zdata0=date("Y-m-d");$zdata1=date("Y-m-d", $datalast);
  27. $zdata2=date("Y-m-d", $datanext);$zdata3=date("Y-m-d", $dataMonday);
  28. }else{
  29. $datanext2 = strtotime("+2 day");
  30. $datanext= strtotime("+1 day");$datalast = strtotime("-1 day");
  31. $zdata0=date("Y-m-d");$zdata1=date("Y-m-d", $datalast);
  32. $zdata2=date("Y-m-d", $datanext);$zdata3=date("Y-m-d", $datanext2);
  33. }
  34. $zdata2ly = date_create($zdata2);$zdata2l = date_format($zdata2ly, 'l');$zdata2m=$wd_dtygpl[$zdata2l];
  35. $zdata1ly = date_create($zdata1);$zdata1l = date_format($zdata1ly, 'l');$zdata1m=$wd_dtygpl[$zdata1l];
  36. $zdata3ly = date_create($zdata3);$zdata3l = date_format($zdata3ly, 'l');$zdata3m=$wd_dtygpl[$zdata3l];
  37. $zdata0ly = date_create($zdata0);$zdata0l = date_format($zdata0ly, 'l');$zdata0m=$wd_dtygpl[$zdata0l];
  38.  
  39.  
  40. $zdata0 to dzień dzisiejszy pomijając niedziele i soboty wtedy jest następny poniedziałek
  41. $zdata1 dzień wczorajszy
  42. $zdata2 dzień następny
  43. $zdata3 dzień +2
  44. $zdata0m wyświetla jaki to dzień np. Wtorek,$zdata1 wyświetla date w formacie rrrr-mm-dd czyli 2013-03-23
  45. skrypt pomija soboty i niedziele dając wtedy tak jak napisałem u góry
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.