Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Porównywanie dwóch dat.
cfneon
post
Post #1





Grupa: Zarejestrowani
Postów: 21
Pomógł: 0
Dołączył: 11.04.2010

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


Witam mam problem, potrzebuję porównać dwie daty. Jedną którą sam wpisze w kodzie, a drugą która pobiera aktualną date jęzeli daty sie zgadzają wypisuje komentarz.

Próbowałem stworzyć coś takiego ale wyskakuje błąd. Php mało co ogarniam więc na 100% jest coś źle. ;c

  1. <?php
  2. $godzina_wpisu = date ("0:29:33")
  3. $obecna_godzina = date("H:i:s"); // pobieranie aktualnej daty
  4. if($godzina_wpisu===$obecna_godzina)
  5. echo "Daty są takie same!";
  6. ?>


Z góry dziękóweczka za pomoc (IMG:style_emoticons/default/wink.gif) )

PS.

Próbowałem jeszcze tak ale też nic.

  1. <?php
  2. $date = new DateTime('2014-01-31 14:45:00');
  3. echo $date->format("d-m-Y H:i");
  4. $obecna_godzina = date("d-m-Y H:i"); // pobieranie aktualnej daty
  5. echo $obecna_godzina
  6. if var_dump($date == $obecna_godzina);
  7. echo "trybi";
  8. else
  9. echo "nie trybi";
  10. ?>


Ten post edytował cfneon 31.01.2014, 00:59:28
Go to the top of the page
+Quote Post
sybii
post
Post #2





Grupa: Zarejestrowani
Postów: 20
Pomógł: 6
Dołączył: 25.10.2010
Skąd: Sanok

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


A co to za błąd?

PS.
W pierwszym przykładzie chyba brakuje Ci czekoś na końcu w drugiej linii (IMG:style_emoticons/default/biggrin.gif)
Go to the top of the page
+Quote Post
_Borys_
post
Post #3





Grupa: Zarejestrowani
Postów: 587
Pomógł: 190
Dołączył: 5.02.2011
Skąd: 64-800

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


W pierwszym przykładzie porównujesz stringi a więc lipa, musisz przetworzyć do czasu uniksowego.
  1. $now = time();
  2. $date = strtotime('0:29:33');
  3. var_dump($date == $now);
  4. var_dump($date < $now);
  5. var_dump($date > $now);

  1. $now = new DateTime('now');
  2. $date = new DateTime('0:29:33');
  3. var_dump($date == $now);
  4. var_dump($date < $now);
  5. var_dump($date > $now);

DateTime::diff
Go to the top of the page
+Quote Post
cfneon
post
Post #4





Grupa: Zarejestrowani
Postów: 21
Pomógł: 0
Dołączył: 11.04.2010

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


Dziękuję za pomoc _Borys_ kod działa z tym że wyświetla bool(false) itp. a chciałem żeby wypisywał konkretny tekst. Próbawałem wpakować to w ifa ale znowu jakiś błąd. ;/

  1. <?php
  2. $now = new DateTime('now');
  3. $date = new DateTime('14:55:33');
  4. if (var_dump($date == $now))
  5. echo "1";
  6. elseif (var_dump($date < $now))
  7. echo "2";
  8. elseif (var_dump($date > $now))
  9. echo "3";
  10. ?>


Ps. Poprawiłem błąd na stronie już się nie wyświetla zapomniałem o ";" po echo, ale niestety nie wyświetla mi komentarz tylko dalej bool(false) itp.

Rozumiem że gdy wpakuje kod w pętle i już będzie działał prawidłowo. Mój tekst będzie wyświetlany codziennie o tej godzinie, a jeżeli zapętle
  1. var_dump($date < $now)
tekst z np. z wczoraj będzie zostawał już na stronie!?

Ten post edytował cfneon 31.01.2014, 15:26:19
Go to the top of the page
+Quote Post
_Borys_
post
Post #5





Grupa: Zarejestrowani
Postów: 587
Pomógł: 190
Dołączył: 5.02.2011
Skąd: 64-800

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


var_dump() było tylko do sprawdzenia czy zwraca prawdę czy fałsz, normalne if() zastosuj
  1. if ($date == $now) echo "1";
Go to the top of the page
+Quote Post
cfneon
post
Post #6





Grupa: Zarejestrowani
Postów: 21
Pomógł: 0
Dołączył: 11.04.2010

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


Kurdde wielkie dzięki, już próbowałem nawet kombinować z nadaniem zmiennej kazdej lini var_dump a w ifie sprawdzenie zmiennej poprawności ale jak wszystko zakończyło się fiaskiem ;p
Więc działa mam jeszcze do ciebie trzy pytania,
Jak się pozbyć wyświetlania tych bool(false), bool(true) na stronie?
I czy w jednym var_dump da się sprawdzić poprawność dwóch działań np. $date < $now, $date == $now? A pytam o to drugie dlatego gdyż chciałem wprowdzić coś typu jeżeli warunek jest spełniony losowo wybiera dany tekst, a nie chce żeby przy
  1. $date == $now
wylosował np. echo "3" a przy
  1. $date < $now
wylosował echo "4"
Jeszcze z tym losowaniem mam pytanie bo domyślam się że za każdym odświeżeniem strony losuje poprostu dany tekst, a chciałbym żeby losował go na dzień i tak zostawał.

Nie wymagam od ciebie kodu bo podejrzewam że to już trochę wiecej robótki ;] Ale jakbyś pokierował chociaż w którą stronę iść jakimi funkcjami się zainteresować, wydaję mi się że na pętli switch byłoby to najlepiej zrobić.
Czekam na odpowiedź, pozdrawiam (IMG:style_emoticons/default/wink.gif) )

Ten post edytował cfneon 31.01.2014, 16:03:18
Go to the top of the page
+Quote Post
nospor
post
Post #7





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Cytat
Jak się pozbyć wyświetlania tych bool(false), bool(true) na stronie?
Poprostu wywal te var_dump..... var_dump sluzy do wyswietlania zawartosci. nie chcesz wyswietlac, to nie wyswietlaj...

Cytat
I czy w jednym var_dump da się sprawdzić poprawność dwóch działań np. $date < $now, $date == $now?
Jak wyzej... var_dump sluzy do wyswietlania. Chcesz cos sprawdzic, i od tego cos warunkowac, to uzywasz IF. Zapoznaj sie wkoncu z podstawami i funkcjami ktore uzywasz.
Go to the top of the page
+Quote Post
_Borys_
post
Post #8





Grupa: Zarejestrowani
Postów: 587
Pomógł: 190
Dołączył: 5.02.2011
Skąd: 64-800

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


Skąd bierzesz tekst do losowania, z pliku ? bazy ?
Jeśli chcesz ustawić tekst na dzień to dla niezidentyfikowanych użytkowników ustawiasz cookie w przeglądarce,
dla zidentyfikowanych cookie albo przechowujesz dane w bazie o czasie wyświetlenia tekstu.
Go to the top of the page
+Quote Post
cfneon
post
Post #9





Grupa: Zarejestrowani
Postów: 21
Pomógł: 0
Dołączył: 11.04.2010

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


oke dzieki, Do zamkniecia. (IMG:style_emoticons/default/wink.gif)
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 23.08.2025 - 06:21