Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: porównanie 3 dat w php
Forum PHP.pl > Forum > PHP
!!_:!SnAkE!:_!!
Witam. Jak jakszybciej sprawdzic, czy jedna data zawiera sie pomiedzy 2 innymi, cos na zasadzie mysql'owskiego BETWEEN ? Probowalem, ale jakos srednio mi to idzie... moze ktos mial juz z czyms takim doczynienia i pomoze ? Z gory dziekuje i pozdrawiam seredcznie.
mike
A może się pochwalisz w jakim formacie masz te daty? tongue.gif

Tak czy inaczej, zamień je na timestamp Unixowy, wtedy porównanie sprowadza się do porównania trzech liczb całkowitych.
!!_:!SnAkE!:_!!
daty moge miec w kazdym formacie tongue.gif narazie data srodkowa jest w formacie yyyy-mm-dd a daty skrajne sa na sztywno okreslone, takze nie ma problemu. problem w tym, ze nie wiem jak interpretowany jest dzien 4 7 miesiaca, czyli 04-07, z tymi zerami na poczatku. w zasadzie to chodzi mi o porównanie samych dni i miesiecy, czy jakastam data jest pomiedzy 4 lipca a 20 sierpnia. jak juz pisalem, data srodkowa jest w formacie yyyy-mm-dd a daty skrajne moge wpisac obojetnie w jakim formacie, bo sa "na sztywno" smile.gif Moze to cos pomoze ? dziekuje za cierpliwosc smile.gif
legorek
Powiedzmy,ze $data2 to to, co chcesz porównać.

  1. <?php
  2. $ts1 = strtotime($data1);
  3. $ts2 = strtotime($data2);
  4. $ts3 = strtotime($data3);
  5.  
  6. if (($ts2 > $ts1) AND ($ts2 < $ts3)) {
  7. echo 'data2 jest pomiędzy data1 i data3';
  8. }
  9. ?>
!!_:!SnAkE!:_!!
Wszystko super, a jak to pzrerobic tak, zeby rok nie mial kompletnie znaczrenia ? zalozmy, ze cos powtarza sie co rok, np znaki zodiaku... i chcialbym na podstawie daty urodzenia (yyyy-mm-dd) ustalic znak zodiaku osoby, ktora wypelnia formularz... KUrde, koniecznie musze nauczyc sie dobrej obslugi daty, bo w tym akurat leze smile.gif Dziekuje za pomoce, cierpliwosc i wyrozumialosc :0 POzdrawiam serdecznie smile.gif
arturwow
Możesz np. zamienić na datę z bieżacego roku:

  1. <?php
  2. $dataUrodzenia = '10-11-1987';
  3. $poczSkorpion = '24-10-'.date('Y');
  4. $konSkorpion = '22-11-'.date('Y');
  5.  
  6. // zamieniamy na dzien i miesiac bieżącego roku
  7. $tmpDataUrodzenia = date('d-m-', strtotime($dataUrodzenia)).date('Y');
  8.  
  9. // zmieniamy wszystko na znaczniki czasu w formacie unixowym
  10.  
  11.  
  12. $ts1 = strtotime($poczSkorpion);
  13. $ts2 = strtotime($tmpDataUrodzenia);
  14. $ts3 = strtotime($konSkorpion);
  15.  
  16. if (($ts1 <= $ts2) AND ($ts2 <= $ts3))
  17.  echo 'Jesteś Skorpionem';
  18. else
  19.  echo 'Nie jesteś Skorpionem';
  20. ?>


Nie sprawdzałem kodu - to tylko idea.
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.