Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Closed TopicStart new topic
> Odejmowanie dat
-Gość_mihow-
post
Post #1





Goście







Witam!
Mam dwie daty i chce je odjąć w celu wyciągnięcia ilości dni w różnicy między tymi datami, czyli jaka jest różnica w ilości dni pomiędzy nimi.
Daty mam w formacie '2004-07-03'.
Jak to zrobić?
Go to the top of the page
+Quote Post
Jojo
post
Post #2





Grupa: Zarejestrowani
Postów: 405
Pomógł: 1
Dołączył: 19.09.2003
Skąd: Lublin

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


Musisz zamienić te daty na Unixowe znaczniki czasu przy pomocy funkcji mktime" title="Zobacz w manualu PHP" target="_manual, a potem odjąć je od siebie. Wynik podzielisz przez liczbę 60*60*24 i otrzymasz ilość dni między tymi datami.
Go to the top of the page
+Quote Post
hwao
post
Post #3


Developer


Grupa: Moderatorzy
Postów: 2 844
Pomógł: 20
Dołączył: 25.11.2003
Skąd: Olkusz




  1. <?php
  2. $arrEx = explode( '-', $data );
  3. // nastpenie tu poslugujesz sie mktime
  4. // masz juz czas w postaci sekund 
  5.  
  6. // teraz odejmujesz ( z 1 daty 2 )
  7.  
  8. // i z tego co CI zostalo tworzysz dni
  9.  
  10. echo round( $roznica/60*60*24 );
  11. ?>


Mniejwiecej tak to powinno dzilac
explode" title="Zobacz w manualu PHP" target="_manual()
mktime" title="Zobacz w manualu PHP" target="_manual()
round" title="Zobacz w manualu PHP" target="_manual()

-- Jojo --
Masz racje (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Nie wiem czemu mi sie pomylilo (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)
Go to the top of the page
+Quote Post
Jojo
post
Post #4





Grupa: Zarejestrowani
Postów: 405
Pomógł: 1
Dołączył: 19.09.2003
Skąd: Lublin

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


hwao: chyba nie rand tylko round" title="Zobacz w manualu PHP" target="_manual (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
mihow
post
Post #5





Grupa: Zarejestrowani
Postów: 68
Pomógł: 0
Dołączył: 15.09.2003
Skąd: Polska / Płock

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


Cytat(Jojo @ 2004-07-08 08:25:22)

No niestety ale taka funkcja nie działa:

  1. <?php
  2. function date_diff($date1, $date2)
  3. {
  4. //$date1 today, or any other day
  5. //$date2 date to check against
  6.  
  7. $d1 = explode(&#092;"-\", $date1);
  8. $y1 = $d1[0];
  9. $m1 = $d1[1];
  10. $d1 = $d1[2];
  11.  
  12. $d2 = explode(&#092;"-\", $date2);
  13. $y2 = $d2[0];
  14. $m2 = $d2[1];
  15. $d2 = $d2[2];
  16.  
  17. $date1_set = mktime(0,0,0, $m1, $d1, $y1);
  18. $date2_set = mktime(0,0,0, $m2, $d2, $y2);
  19.  
  20. return(round(($date2_set-$date1_set)/(60*60*24))); 
  21. } 
  22. ?>


Zwraca mi wartości w postaci 46665456
Go to the top of the page
+Quote Post
hwao
post
Post #6


Developer


Grupa: Moderatorzy
Postów: 2 844
Pomógł: 20
Dołączył: 25.11.2003
Skąd: Olkusz




  1. <?php
  2. function date_diff($date1, $date2)
  3. {
  4. //$date1 today, or any other day
  5. //$date2 date to check against
  6.  
  7. $d1 = explode(&#092;"-\", $date1);
  8. $y1 = $d1[0];
  9. $m1 = $d1[1];
  10. $d1 = $d1[2];
  11.  
  12. $d2 = explode(&#092;"-\", $date2);
  13. $y2 = $d2[0];
  14. $m2 = $d2[1];
  15. $d2 = $d2[2];
  16.  
  17. $date1_set = mktime(0,0,0, $m1, $d1, $y1);
  18. $date2_set = mktime(0,0,0, $m2, $d2, $y2);
  19.  
  20. return(round(($date2_set-$date1_set)/(60*60*24)));
  21. }
  22.  
  23. echo date_diff( '2003-01-01', '2003-12-31' );
  24. ?>

Mi działa dobrze
Go to the top of the page
+Quote Post
File
post
Post #7





Grupa: Zarejestrowani
Postów: 12
Pomógł: 0
Dołączył: 9.08.2004

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


A ktos moze w skrocie napisac, jak skierowac zapytanie do SQL'a by wyrzucil rekordy ktore sa z ostatnich 3ch dni?? Dzieki!
Go to the top of the page
+Quote Post
Dabroz
post
Post #8





Grupa: Zarejestrowani
Postów: 286
Pomógł: 0
Dołączył: 1.11.2003
Skąd: Poland, Płock

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


Nie to forum.

Ale:

  1. SELECT * FROM tabela WHERE DATA > [data_sprzed_trzech_dni]
Go to the top of the page
+Quote Post
-sechu-
post
Post #9





Goście







Cytat
  1. SELECT * FROM tabela WHERE DATA > [data_sprzed_trzech_dni]


Data sprzed trzech dni -
  1. SUBDATE(NOW(), INTERVAL 3 DAY)


Pozdrawiam Przemek
Go to the top of the page
+Quote Post
niko
post
Post #10





Grupa: Zarejestrowani
Postów: 109
Pomógł: 0
Dołączył: 2.06.2005

Ostrzeżenie: (30%)
XX---


a jak zrobić by np podać pierwszą date i ilość dni które ma dodać ?

no i jak potem w stronie wyświetlać tylko te linijki z bazy gdzie daty są z tego przedziału ?
Go to the top of the page
+Quote Post
nospor
post
Post #11





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




watek zamykam by przypadkime nkt dla niko juz nie odpowiedzial, gdyz w ciagu 10 minut zasypal juz forum tymi samymi postami. dodatkowo dostaje kolejne ostrzezenie za nie dostosowanie sie doregulaminu i upomnien moderatorów
Go to the top of the page
+Quote Post

Closed 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.08.2025 - 17:55