Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Closed TopicStart new topic
> Odejmowanie dat
-Gość_mihow-
post 8.07.2004, 08:57:38
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 8.07.2004, 09:21:24
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.


--------------------
Rozwój cywilizacji informatycznej to wyścig między programistami, którzy wytwarzają coraz łatwiejsze
programy użytkowe dla idiotów, a światem produkującym coraz lepszych gatunkowo idiotów.

Blog: Małolepszy.info
Go to the top of the page
+Quote Post
hwao
post 8.07.2004, 09:23:17
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 smile.gif
Nie wiem czemu mi sie pomylilo winksmiley.jpg
Go to the top of the page
+Quote Post
Jojo
post 8.07.2004, 09:25:22
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 smile.gif


--------------------
Rozwój cywilizacji informatycznej to wyścig między programistami, którzy wytwarzają coraz łatwiejsze
programy użytkowe dla idiotów, a światem produkującym coraz lepszych gatunkowo idiotów.

Blog: Małolepszy.info
Go to the top of the page
+Quote Post
mihow
post 8.07.2004, 10:14:29
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 8.07.2004, 10:25:21
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 9.08.2004, 16:07:30
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 9.08.2004, 16:13:06
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 9.08.2004, 19:45:23
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 29.10.2005, 17:03:22
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 29.10.2005, 17:05:25
Post #11





Grupa: Moderatorzy
Postów: 36 556
Pomógł: 6314
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


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post

Closed 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: 26.04.2025 - 02:11