Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Czy data jest starsza o X miesięcy od teraz?
Forum PHP.pl > Forum > PHP
Seth
Mam pewien problem, ktory nie wiem jak rozwiazac.
Dotyhczas takie rzeczy rozwiazaywalem SQLem ale przyszedl czas zmierzyc sie z tym w php i ugrzezlem.

A problem lezy w tym, ze mam jedna date w postaci: yyyy-mm-dd
Potrzebuje teraz sprawdzic czy data ta jest max. starsza o X miesiacy od obecnego czasu.

Jak?! :| :| :|

Urzylem skryptu ze strony:
http://aidan.dotgeek.org/repos/?file=Duration.php

...do prownania dat.
Moj if wyglada w ten sposob:
  1. <?php
  2. if (Duration::datediffTS($dateFrom, date('Y-d-m', time())) > ((60 * 60 * 24 * 31) * $this->_user->maxMonthReachBack)) {
  3. ...
  4. }
  5. ?>


(User->maxMonthReachBack = 3)

I niestety nie dziala jak daje date np: 2006-07-04 mimo, ze data ta spelnia kryterium (nie siega ponad 3 miesiace w stecz).

Przyczym podobna metoda porownywania: czy data od i data do jest nie wieksza niz 7 dni

  1. <?php
  2. if (Duration::datediffTS($dateFrom, $dateTo) > ((60 * 60 * 24) * $this->_user->maxDayBetweenDate)) { // Dopuszczalna ilosc dni miedzy okresami
  3. ...
  4. }
  5. ?>


...dziala bez zarzutu :|


Jakies pomysly? Ja juz trace sily :/



P.S.
Powinni wprowadzic typ niejawny datetime w php bo mozna sie z tym pociac.
sf
http://php.net/strtotime <- bardzo ułatwia sprawę winksmiley.jpg
nospor
  1. <?php
  2. function check($date, $type, $count ) {
  3.  
  4. return strtotime($date)>=strtotime("-$count $type");
  5.  
  6. }
  7.  
  8. if (check('2006-04-26','month',3)) echo 'Ok'; else echo 'stara';
  9. if (check('2006-04-05','month',3)) echo 'Ok'; else echo 'stara';
  10. if (check('2006-07-23','week',1)) echo 'Ok'; else echo 'stara';
  11. if (check('2006-07-12','week',1)) echo 'Ok'; else echo 'stara';
  12. ?>
Seth
  1. <?php
  2. if (time() - strtotime('2006-07-04') > (60 * 60 * 24 * 31 * 3)){
  3.  echo 'OK';
  4. }
  5. ?>


Nie dziala sad.gif


--- Edit ---

@nospor: exclamation.gif! DZIEKI

Ide kupic szampana biggrin.gif
nospor
@seth pozatym w Twojej logice byl blad: nie > a < . przeciez zeby data nie byla starsza to roznica musi byc mniejsz od 3 miesiecy a nie wieksza. Dodatkowo przyjales ze kazdy miesiac ma 31 dni - źle tongue.gif

edit: szampana dla mnie? fajnie biggrin.gif
Seth
nospor faktycznie, zmienialem to kilka razy i sprawdzalem czy dziala odwrotnie.
Szampan dla wszystkich biggrin.gif Siedzialem nad tym od 9 i juz wlosy rwalem tongue.gif

P.S.
2006-04-26 -- ha! to moja daata urodzin
nospor
Cytat
2006-04-26 -- ha! to moja daata urodzin
laugh.gif to ty nadwyraz rozwiniete dziecko jestes. ja gdy mialem 3 miesiące to jeszcze pod siebie robilem a o pisaniu na forum to nawet nie marzylem smile.gif

ps: dalbym se glowe uciąc, ze na forum jestes juz od kilku lat.... hmmmm.... ty mnie kita wciskasz laugh.gif

edit:
Cytat
A te kilka lat wczesniej to stad, ze to konto po moim dziadku

A dziadek to pewnie ma teraz 10 lat? winksmiley.jpg
ps: a warna za korzystanie z cudzego konta chcesz? laugh.gif
Seth
:DDDDD

Wiesz jak jest, dzisiaj dzieci bardzo szybko sie ucza biggrin.gif
A te kilka lat wczesniej to stad, ze to konto po moim dziadku biggrin.gif
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.