Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Operacje na datach, php myli sie o 1 dzien..
krzyzak_p
post 15.08.2007, 17:55:18
Post #1





Grupa: Zarejestrowani
Postów: 45
Pomógł: 0
Dołączył: 10.10.2004

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


Na potrzeby pewnej stronki, ktora tworze potrzebowalem skrypt, ktory bedzie wyswietlal date najblizszego dnia tygodnia (pon, wt, sr), a takze date takiego dnia za x tygodni..
Napisalem sobie funkcje o nastepujacym kodzie:
  1. <?php
  2. function nast_dzien($dzien, $tygodni){
  3. $aktualny_d_t = date("w");
  4.  
  5. if($aktualny_d_t > $dzien){
  6. $roznica = $aktualny_d_t - $dzien;
  7. $next_wybrany_d_t = 7 - $roznica;
  8. }
  9. elseif($aktualny_d_t == $dzien) $next_wybrany_d_t = 7;
  10. elseif($akutalny_d_t < $dzien){
  11. $next_wybrany_d_t = $dzien - $aktualny_d_t;
  12. }
  13.  
  14. $dni = $next_wybrany_d_t + ($tygodni*7);
  15. $data = date("Y-m-d");
  16. $wynik = date("d.m.Y",(strtotime($data) + (3600*24*$dni)));
  17. return $wynik;
  18.  
  19. }
  20.  
  21. echo nast_dzien(6, 16);
  22. ?>

pierwsza zmienna to dzien tygodnia (format taki jak zwraca date("w")winksmiley.jpg, i za ile tygodni ma znalezc taki dzien tygodnia..
W powyzszym przykladzie wyswietla mi najblizsza sobote za 16tygodni, a skrypt wyswietla 7.12.2007, co po sprawdzeniu w 3 roznych kalendarzach jest piatkiem, a nie sobota;/
Dodam tylko ze dla mniejszego zakresu dat (gdy dzien, ktory chce uzyskac jest najdalej ostatnim dniem pazdziernika) caly skrypt dziala dobrze, ale od listopada cos sie zaczyna krzaczyc i to niezaleznie od platformy i wersji php (win, linux, php5.1, php5.2)...
Ma ktos moze pomysl co moze byc tego przyczyna?
Go to the top of the page
+Quote Post
emacieka
post 15.08.2007, 19:51:00
Post #2





Grupa: Zarejestrowani
Postów: 40
Pomógł: 1
Dołączył: 29.12.2003
Skąd: Szczecin

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


  1. <?php
  2. function nast_dzien ( $dzien, $tygodni )
  3. {
  4. $days = array ( 'Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday' );
  5. $time = strtotime (' next ' . $days[$dzien] . ' + ' . $tygodni . ' week');
  6.  
  7. return date( 'Y-m-d', $time );
  8. }
  9. ?>


a tutaj jeszcze jedna ciekawa funkcja: Temat: Czas na podstawie zwrotu
ps: swiat jest maly winksmiley.jpg

Ten post edytował emacieka 15.08.2007, 20:06:39


--------------------
''' ... Among the blind one eyed man is a king ... '''
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 16.07.2025 - 16:59