Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> porównanie 3 dat w php
!!_:!SnAkE!:_!!
post 12.08.2006, 12:09:23
Post #1





Grupa: Zarejestrowani
Postów: 39
Pomógł: 0
Dołączył: 14.04.2005

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


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.
Go to the top of the page
+Quote Post
mike
post 12.08.2006, 12:12:45
Post #2





Grupa: Przyjaciele php.pl
Postów: 7 494
Pomógł: 302
Dołączył: 31.03.2004

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


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.
Go to the top of the page
+Quote Post
!!_:!SnAkE!:_!!
post 12.08.2006, 12:18:44
Post #3





Grupa: Zarejestrowani
Postów: 39
Pomógł: 0
Dołączył: 14.04.2005

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


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
Go to the top of the page
+Quote Post
legorek
post 12.08.2006, 12:45:48
Post #4





Grupa: Zarejestrowani
Postów: 411
Pomógł: 35
Dołączył: 27.06.2004
Skąd: Kraków

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


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. ?>


Ten post edytował legorek 12.08.2006, 12:46:24


--------------------
Go to the top of the page
+Quote Post
!!_:!SnAkE!:_!!
post 12.08.2006, 12:50:06
Post #5





Grupa: Zarejestrowani
Postów: 39
Pomógł: 0
Dołączył: 14.04.2005

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


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
Go to the top of the page
+Quote Post
arturwow
post 12.08.2006, 15:36:20
Post #6





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 26.10.2005

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


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.
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 Wersja Lo-Fi Aktualny czas: 23.04.2024 - 12:52