Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP] Zamiana liczby dni na rok
tomsi
post
Post #1





Grupa: Zarejestrowani
Postów: 379
Pomógł: 45
Dołączył: 30.06.2007

Ostrzeżenie: (10%)
X----


Mam skrypt, który oblicza mi liczbę dni od podanej daty do dnia dzisiejszego. Wynik mam w dniach. A cchiałem to zamienić, żeby nie było 732 dni tylko 2 lata i 2 dni. No niby wystarczy zrobić w kodzie *365, ale co z rozróżnianiem lat przestępnych?


--------------------
Jeśli Ci pomogłem kliknij "Pomógł"
Jeśli Ty mi pomogłeś kliknę "Pomógł"
Go to the top of the page
+Quote Post
piotrooo89
post
Post #2


Newsman


Grupa: Moderatorzy
Postów: 4 005
Pomógł: 548
Dołączył: 7.04.2008
Skąd: Trzebinia/Kraków




ja bym sprawdzał czy rok był przestępny

  1. <?php
  2. date('L');
  3. ?>


i później jakiś if i liczysz.


--------------------
Go to the top of the page
+Quote Post
tomsi
post
Post #3





Grupa: Zarejestrowani
Postów: 379
Pomógł: 45
Dołączył: 30.06.2007

Ostrzeżenie: (10%)
X----


A jak sprawdzidzać wszystkie lata np. od 1980 roku?


--------------------
Jeśli Ci pomogłem kliknij "Pomógł"
Jeśli Ty mi pomogłeś kliknę "Pomógł"
Go to the top of the page
+Quote Post
piotrooo89
post
Post #4


Newsman


Grupa: Moderatorzy
Postów: 4 005
Pomógł: 548
Dołączył: 7.04.2008
Skąd: Trzebinia/Kraków




ja bym sprawdzał po kolei dopóki się nie natknę a później dodawał 4 do poprzedniego. kombinacje jak nie wiem.


--------------------
Go to the top of the page
+Quote Post
tomsi
post
Post #5





Grupa: Zarejestrowani
Postów: 379
Pomógł: 45
Dołączył: 30.06.2007

Ostrzeżenie: (10%)
X----


NO dobra to jest oczywiste i jak natrafię na taki rok to jak sprawdzić tym
  1. <?php
  2. date('L');
  3. ?>
? Bo to pobiera tlyko aktualną datę. Dobrze rozumiem?


--------------------
Jeśli Ci pomogłem kliknij "Pomógł"
Jeśli Ty mi pomogłeś kliknę "Pomógł"
Go to the top of the page
+Quote Post
MateuszS
post
Post #6





Grupa: Zarejestrowani
Postów: 1 429
Pomógł: 195
Dołączył: 6.10.2008
Skąd: Kraków/Tomaszów Lubelski

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


Pokaż może ten skrypt, to go przerobimy żeby uwzględniał lata przestępne


--------------------
O! Zimniok :P
Go to the top of the page
+Quote Post
tomsi
post
Post #7





Grupa: Zarejestrowani
Postów: 379
Pomógł: 45
Dołączył: 30.06.2007

Ostrzeżenie: (10%)
X----


No mogę pokazać, ale nie wiem w czym to pomoże w przeliczeniu dni na lata...

  1. <?php
  2. $miesiac_2="12";
  3. $dzien_2="28";
  4. $rok_2="2008";
  5.  
  6.  
  7. $dzis_dzien = date("d");
  8. $dzis_miesiac = date("m");
  9. $dzis_rok = date ("Y");
  10.  
  11. $stara = mktime(0 ,0 , 0, $miesiac_2, $dzien_2, $rok_2);
  12. $dzis = mktime(0 ,0 , 0, $dzis_miesiac, $dzis_dzien, $dzis_rok);
  13.  
  14. $roznica = $dzis - $stara;
  15. $dni = floor($roznica / (24*60*60));
  16.  
  17.  
  18. echo $dni;
  19. ?>


Ten post edytował tomsi 29.12.2008, 23:35:09


--------------------
Jeśli Ci pomogłem kliknij "Pomógł"
Jeśli Ty mi pomogłeś kliknę "Pomógł"
Go to the top of the page
+Quote Post
flashdev
post
Post #8





Grupa: Zarejestrowani
Postów: 812
Pomógł: 117
Dołączył: 2.12.2008

Ostrzeżenie: (10%)
X----


Warto zauważyć, że uwzględnienie lat przestępnych to nie tylko dodanie warunku typu (rok%4==0).
Co około 400 lat następuje przesunięcie roku przestępnego, dla wyrównania niedokładności.


--------------------
Go to the top of the page
+Quote Post
phpcoder89
post
Post #9





Grupa: Zarejestrowani
Postów: 15
Pomógł: 1
Dołączył: 29.12.2008

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


Cytat(flashdev @ 29.12.2008, 23:39:54 ) *
Warto zauważyć, że uwzględnienie lat przestępnych to nie tylko dodanie warunku typu (rok%4==0).
Co około 400 lat następuje przesunięcie roku przestępnego, dla wyrównania niedokładności.


teraz to dziala inaczej: http://pl.wikipedia.org/wiki/Sekunda_przest%C4%99pna
czyli jutro bedzie 3 2 1 1 0 ;P happy new year haha.gif
Go to the top of the page
+Quote Post
kefirek
post
Post #10





Grupa: Zarejestrowani
Postów: 781
Pomógł: 256
Dołączył: 29.06.2008

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


  1. <?php
  2. $lat = floor($roznica / (365 * 24 * 60 * 60));
  3. ?>
Go to the top of the page
+Quote Post
tomsi
post
Post #11





Grupa: Zarejestrowani
Postów: 379
Pomógł: 45
Dołączył: 30.06.2007

Ostrzeżenie: (10%)
X----


Cytat(kefirek @ 30.12.2008, 09:19:24 ) *
  1. <?php
  2. $lat = floor($roznica / (365 * 24 * 60 * 60));
  3. ?>


No tak to ja wiem, ale jak w tym uwzględnić i podzielić czy rok miał 365 czy 366 dni?


--------------------
Jeśli Ci pomogłem kliknij "Pomógł"
Jeśli Ty mi pomogłeś kliknę "Pomógł"
Go to the top of the page
+Quote Post
kefirek
post
Post #12





Grupa: Zarejestrowani
Postów: 781
Pomógł: 256
Dołączył: 29.06.2008

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


Jak chcesz sprawdzić czy teraz mam rok przestępny
  1. <?php
  2. $rok=date('Y');
  3. if(!($rok%4)){
  4. // dodaj 1 daty
  5. }
  6. ?>


Ten post edytował kefirek 30.12.2008, 11:52:58
Go to the top of the page
+Quote Post
.radex
post
Post #13





Grupa: Zarejestrowani
Postów: 1 657
Pomógł: 125
Dołączył: 29.04.2006

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


Cytat(phpcoder89 @ 30.12.2008, 08:40:14 ) *
teraz to dziala inaczej: http://pl.wikipedia.org/wiki/Sekunda_przest%C4%99pna
czyli jutro bedzie 3 2 1 1 0 ;P happy new year haha.gif


Yyy... nie... AFAIK rok jest przestępny gdy jest podzielny przez 4, ale nie jest podzielny przez 100, no chyba, że jest podzielny przez 400.

Ten post edytował .radex 30.12.2008, 12:06:44


--------------------
blog | Tadam — minutnik do Pomodoro na Maka :)
Go to the top of the page
+Quote Post
Vexator
post
Post #14





Grupa: Zarejestrowani
Postów: 32
Pomógł: 6
Dołączył: 28.08.2006
Skąd: Gdańsk

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


czy zadowoli Cię pokazanie czegoś takiego?
  1. <?php
  2. $lat=date("Y", $roznica);
  3. $miesiecy=date("m", $roznica);
  4. $dni=date("d", $roznica);
  5. ?>


Ten post edytował Vexator 30.12.2008, 13:06:49


--------------------
Pomogłem? Kliknij "pomógł" ;)
Go to the top of the page
+Quote Post
tomsi
post
Post #15





Grupa: Zarejestrowani
Postów: 379
Pomógł: 45
Dołączył: 30.06.2007

Ostrzeżenie: (10%)
X----


Jednak skrypt pomimo tego, że mi się wydawało, że działa ok jednak niedokońca. Wydaje mi się, że teraz nie nie rozróżnia czy miesiąc ma 28, 29, 30 czy 31 dni.

  1. <?php
  2. $miesiac_2="12";
  3. $dzien_2="30";
  4. $rok_2="2003";
  5.  
  6.  
  7. $dzis_dzien = date("d");
  8. $dzis_miesiac = date("m");
  9. $dzis_rok = date ("Y");
  10.  
  11. $stara = mktime(0 ,0 , 0, $miesiac_2, $dzien_2, $rok_2);
  12. $dzis = mktime(0 ,0 , 0, $dzis_miesiac, $dzis_dzien, $dzis_rok);
  13.  
  14. $roznica = $dzis - $stara;
  15. $dni = floor($roznica / (24*60*60));
  16.  
  17.  
  18. echo "Dni wszystkich: $dni";
  19.  
  20. $lat=date("Y", $roznica);
  21. $miesiecy=date("m", $roznica);
  22. $dni=date("d", $roznica);
  23.  
  24. $lat = $lat - 1970;
  25. $miesiecy = $miesiecy - 1;
  26. $dni = $dni -1;
  27.  
  28. echo "<br>";
  29. echo "Lat: $lat";
  30. echo "<br>";
  31. echo "Miesięcy: $miesiecy";
  32. echo "<br>";
  33. echo "Dni: $dni";
  34. ?>



jeśli wprowadzę datę 30-12-2008 jest ok, że dzisiaj, ale jeśli 28-07-2008 to okłamuje na 2 dni.


--------------------
Jeśli Ci pomogłem kliknij "Pomógł"
Jeśli Ty mi pomogłeś kliknę "Pomógł"
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 Aktualny czas: 21.08.2025 - 09:45