Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Odejmowanie dat
Forum PHP.pl > Forum > Przedszkole
Gość_mihow
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ć?
Jojo
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.
hwao
  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
Jojo
hwao: chyba nie rand tylko round" title="Zobacz w manualu PHP" target="_manual smile.gif
mihow
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
hwao
  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
File
A ktos moze w skrocie napisac, jak skierowac zapytanie do SQL'a by wyrzucil rekordy ktore sa z ostatnich 3ch dni?? Dzieki!
Dabroz
Nie to forum.

Ale:

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


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


Pozdrawiam Przemek
niko
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 ?
nospor
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
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.