Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]PHP nie zna daty 25.03.2012
Forum PHP.pl > Forum > Przedszkole
mambus
Witajcie !
chce mi się śmiać - bo jakbym nie kombinował - tak PHP w żaden sposób do mojego napisanego kalendarza, nie jest w stanie "wypluć" dnia 25.03.2012 - wycina go po prostu. Kalendarz sypie się do momentu właśnie gdy powinien pojawić się 25.03.2012 - później dziala. Nie mam pojęcia czemu, walcze 2 dzień, znajomi patrzyli - naprawdę nic nie wiemy, może ktoś z Was widzi błąd questionmark.gif?

  1. function kalendarz($fix)
  2. {
  3. if($fix > 16) return "<div style='color: #ff0033: Możesz maksymalnie z wyprzedzeniem <b><u>16 tygodni</u></b> !'></div>";
  4. else
  5. {
  6.  
  7. $day = 86400;
  8.  
  9. if(date("N")==1)
  10. {
  11. $ret[0] = date("d-m-Y", strtotime(date("d-m-Y")) + ($day*7)*$fix);
  12. $ret[1] = date("d-m-Y", strtotime(date("d-m-Y")) + ($day*7)*$fix + $day);
  13. $ret[2] = date("d-m-Y", strtotime(date("d-m-Y")) + ($day*7)*$fix + 2*$day);
  14. $ret[3] = date("d-m-Y", strtotime(date("d-m-Y")) + ($day*7)*$fix + 3*$day);
  15. $ret[4] = date("d-m-Y", strtotime(date("d-m-Y")) + ($day*7)*$fix + 4*$day);
  16. $ret[5] = date("d-m-Y", strtotime(date("d-m-Y")) + ($day*7)*$fix + 5*$day);
  17. $ret[6] = date("d-m-Y", strtotime(date("d-m-Y")) + ($day*7)*$fix + 6*$day);
  18. }
  19. elseif(date("N")==2)
  20. {
  21. $ret[0] = date("d-m-Y", strtotime(date("d-m-Y")) + ($day*7)*$fix - $day);
  22. $ret[1] = date("d-m-Y", strtotime(date("d-m-Y")) + ($day*7)*$fix);
  23. $ret[2] = date("d-m-Y", strtotime(date("d-m-Y")) + ($day*7)*$fix + $day);
  24. $ret[3] = date("d-m-Y", strtotime(date("d-m-Y")) + ($day*7)*$fix + 2*$day);
  25. $ret[4] = date("d-m-Y", strtotime(date("d-m-Y")) + ($day*7)*$fix + 3*$day);
  26. $ret[5] = date("d-m-Y", strtotime(date("d-m-Y")) + ($day*7)*$fix + 4*$day);
  27. $ret[6] = date("d-m-Y", strtotime(date("d-m-Y")) + ($day*7)*$fix + 5*$day);
  28. }
  29. elseif(date("N")==3)
  30. {
  31. print $fix."&nbsp;";
  32. $ret[0] = date("d-m-Y", strtotime(date("d-m-Y")) + ($day*7)*$fix - 2*$day);
  33. $ret[1] = date("d-m-Y", strtotime(date("d-m-Y")) + ($day*7)*$fix - $day);
  34. $ret[2] = date("d-m-Y", strtotime(date("d-m-Y")) + ($day*7)*$fix);
  35. $ret[3] = date("d-m-Y", strtotime(date("d-m-Y")) + ($day*7)*$fix + $day);
  36. $ret[4] = date("d-m-Y", strtotime(date("d-m-Y")) + ($day*7)*$fix + 2*$day);
  37. $ret[5] = date("d-m-Y", strtotime(date("d-m-Y")) + ($day*7)*$fix + 3*$day);
  38. $ret[6] = date("d-m-Y", strtotime(date("d-m-Y")) + ($day*7)*$fix + 4*$day);
  39. }
  40. elseif(date("N")==4)
  41. {
  42. $ret[0] = date("d-m-Y", strtotime(date("d-m-Y")) + ($day*7)*$fix - 3*$day);
  43. $ret[1] = date("d-m-Y", strtotime(date("d-m-Y")) + ($day*7)*$fix - 2*$day);
  44. $ret[2] = date("d-m-Y", strtotime(date("d-m-Y")) + ($day*7)*$fix - $day);
  45. $ret[3] = date("d-m-Y", strtotime(date("d-m-Y")) + ($day*7)*$fix);
  46. $ret[4] = date("d-m-Y", strtotime(date("d-m-Y")) + ($day*7)*$fix + $day);
  47. $ret[5] = date("d-m-Y", strtotime(date("d-m-Y")) + ($day*7)*$fix + 2*$day);
  48. $ret[6] = date("d-m-Y", strtotime(date("d-m-Y")) + ($day*7)*$fix + 3*$day);
  49. }
  50. elseif(date("N")==5)
  51. {
  52. $ret[0] = date("d-m-Y", strtotime(date("d-m-Y")) + ($day*7)*$fix - 4*$day);
  53. $ret[1] = date("d-m-Y", strtotime(date("d-m-Y")) + ($day*7)*$fix - 3*$day);
  54. $ret[2] = date("d-m-Y", strtotime(date("d-m-Y")) + ($day*7)*$fix - 2*$day);
  55. $ret[3] = date("d-m-Y", strtotime(date("d-m-Y")) + ($day*7)*$fix - $day);
  56. $ret[4] = date("d-m-Y", strtotime(date("d-m-Y")) + ($day*7)*$fix);
  57. $ret[5] = date("d-m-Y", strtotime(date("d-m-Y")) + ($day*7)*$fix + $day);
  58. $ret[6] = date("d-m-Y", strtotime(date("d-m-Y")) + ($day*7)*$fix + 2*$day);
  59. }
  60. elseif(date("N")==6)
  61. {
  62. $ret[0] = date("d-m-Y", strtotime(date("d-m-Y")) + ($day*7)*$fix - 5*$day);
  63. $ret[1] = date("d-m-Y", strtotime(date("d-m-Y")) + ($day*7)*$fix - 4*$day);
  64. $ret[2] = date("d-m-Y", strtotime(date("d-m-Y")) + ($day*7)*$fix - 3*$day);
  65. $ret[3] = date("d-m-Y", strtotime(date("d-m-Y")) + ($day*7)*$fix - 2*$day);
  66. $ret[4] = date("d-m-Y", strtotime(date("d-m-Y")) + ($day*7)*$fix - $day);
  67. $ret[5] = date("d-m-Y", strtotime(date("d-m-Y")) + ($day*7)*$fix);
  68. $ret[6] = date("d-m-Y", strtotime(date("d-m-Y")) + ($day*7)*$fix + $day);
  69. }
  70. elseif(date("N")==7)
  71. {
  72. $ret[0] = date("d-m-Y", strtotime(date("d-m-Y")) + ($day*7)*$fix - 6*$day);
  73. $ret[1] = date("d-m-Y", strtotime(date("d-m-Y")) + ($day*7)*$fix - 5*$day);
  74. $ret[2] = date("d-m-Y", strtotime(date("d-m-Y")) + ($day*7)*$fix - 4*$day);
  75. $ret[3] = date("d-m-Y", strtotime(date("d-m-Y")) + ($day*7)*$fix - 3*$day);
  76. $ret[4] = date("d-m-Y", strtotime(date("d-m-Y")) + ($day*7)*$fix - 2*$day);
  77. $ret[5] = date("d-m-Y", strtotime(date("d-m-Y")) + ($day*7)*$fix - $day);
  78. $ret[6] = date("d-m-Y", strtotime(date("d-m-Y")) + ($day*7)*$fix);
  79. }
  80. return $ret;
  81. }
  82. }
mortus
  1. echo '<pre>';
  2. var_dump(kalendarz(-1)); // poprzedni tydzień (a tam dzień 25 marzec 2012)
  3. var_dump(kalendarz(0)); // obecny tydzień
  4. var_dump(kalendarz(1)); // przyszły tydzień

Czy to aby na pewno jest Twoja funkcja, skoro nie potrafisz z niej korzystać?
Necsord
Kojarzysz może co było 25 marca? smile.gif Jakaś zmiana w życiu polaczków ? Jak ciągle nie przychodzi tobie nic do głowy to dodaj w date parametr I ( duże i ) i dump'nij sobie kalendarz(-1) i kalendarz(0). Jeżeli chodzi o odpowiedz to przeczytaj manual'a masz nawet w przykładach.
mambus
no moja funkcja... nie rozumiem pytania. Wykorzystuje podobną i działa. Na potrzeby innego projektu tą zmodyfikowałem i nie wiem dlaczego nie działa 25.03.2012.
mortus
Cytat(mambus @ 28.03.2012, 23:54:26 ) *
no moja funkcja... nie rozumiem pytania. Wykorzystuje podobną i działa. Na potrzeby innego projektu tą zmodyfikowałem i nie wiem dlaczego nie działa 25.03.2012.

To może pokaż kod, jak ją wykorzystujesz?
mambus
  1.  
  2. for ($c=-3; $c<4; $c++)
  3. {
  4. $row=kalendarz($c);
  5. }


Potrzebuje mieć dzisiejszy dzień w połowie kalendarza i mam.

Już dump-uje. Domyślam się że chodzi o zmianę czasu... ?
mortus
Cytat(mambus @ 29.03.2012, 00:00:19 ) *
Potrzebuje mieć dzisiejszy dzień w połowie kalendarza i mam.

To tylko przypadek, bo zadaniem funkcji jest pokazywanie całych tygodni (od poniedziałku do piątku) wstecz, do przodu oraz obecnego tygodnia. To, że środa/czwartek są mniej więcej w połowie tygodnia to żadna nowość. Funkcja działa tak, jak ma działać:



No chyba, że nie o tej funkcji mówimy, co trzeba.
mambus
@Mortus, tak, ale u mnie pomija 25-03-2012 i przeskakuje dalej. Kombinuje i po ustawieniu
  1. date_default_timezone_set('America/Los_Angeles');
jest 25-03-2012 ale ucina 11-03-2012. Ppo ustawieniu Warszawy - ucina 25. Ja manual czytałem, naprwde - ja tego nie rozumiem zwyczajnie. 25go zmienił się czas na letni. Ale jak mam to odnieść w kodzie ?
Necsord
W manualu date masz jak byk napisane:
Cytat
This can be more reliable than simply adding or subtracting the number of seconds in a day or month to a timestamp because of daylight saving time.


Innymi słowy masz używać funkcji mktime do dodawania / odejmowania dni, godzin itd lub klasy DateTime dla PHP 5.2.0+.
mortus
W najnowszej wersji PHP (bo takową posiadam) było sporo poprawek związanych z funkcją date() i stąd (podejrzewam) różnica w działaniu. Użyj mktime() lub klasy DateTime, jak radzi Necsord.
mambus
Jasne, już czaje, dzięki. W moim "archaicznym" rozwiązaniu pomogło ustawienie default_time_zone na ZULU.

Zastosuje się do porad - dzięki.
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.