Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Porównywanie czasu
Mody23
post
Post #1





Grupa: Zarejestrowani
Postów: 276
Pomógł: 0
Dołączył: 30.06.2010

Ostrzeżenie: (10%)
X----


Witam!

Arytmetycznie coś możemy w PHP porównać np. tak:

  1. $zmiennax = '1666';
  2. $zmiennay = '1555';
  3.  
  4. if ( $zmiennax < $zmiennay )
  5. costam


Może przykład niezbyt wyszukany, ale nie ważne.

Jak takie coś mam osiągnąć z czasem?

Powiedzmy, że ostatni post był napisany dzisiaj o 14:40, a pewien "bot" dodał posta dzisiaj o 15:30 i chcę aby w kolumnie ostatni post, nie było posta usera, tylko tego bota. I właśnie muszę porównać, czasowo, który post jest "świeższy" - czy post bota, czy post usera.

Jak to ma wyglądać?

  1. $postusera = $row['last_post'];
  2. $postbota = $row['post_bota'];
  3.  
  4. if ($postusera > $postbota )


Wiem, że nie tak, ale napisałem, abyście mnie lepiej zrozumieli.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 4)
karolrynio
post
Post #2





Grupa: Zarejestrowani
Postów: 144
Pomógł: 25
Dołączył: 2.02.2009

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


http://php.net/manual/en/function.strtotime.php


  1.  
  2. if( strtotime( $data1 ) > strtotime( $data2 ) ) {
  3. echo $data1;
  4. } else {
  5. echo $data2;
  6. }
  7.  

Go to the top of the page
+Quote Post
Sephirus
post
Post #3





Grupa: Zarejestrowani
Postów: 1 527
Pomógł: 438
Dołączył: 28.06.2011
Skąd: Warszawa

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


Opcji jest baaardzo dużo... najprościej przekonwertować datę na timestamp (uniksowy znacznik czasu) i hula

Co prawda wydaje mi się że funckja strtotime() jest albo przestarzała albo coś tam trzeba z "locale" poustawiać ale najprościej:

  1. $postusera = $row['last_post'];
  2. $postbota = $row['post_bota'];
  3.  
  4. if (strtotime($postusera) > strtotime($postbota) )


strtotime() zwraca unixowy znacznik czasu czyli liczbę sekund od stycznia 1970 roku. Zatem im wiekszy tym data jest większa (w przyszłość)(IMG:style_emoticons/default/smile.gif)

W ptzypdaku przykładu wyżej jeżeli $postusera jest datą przyszłą względem $postbota to warunek jest spełniony

Ten post edytował Sephirus 19.10.2011, 15:05:34
Go to the top of the page
+Quote Post
Mody23
post
Post #4





Grupa: Zarejestrowani
Postów: 276
Pomógł: 0
Dołączył: 30.06.2010

Ostrzeżenie: (10%)
X----


No i super, dziękuję (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
Crozin
post
Post #5





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

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


Obiekt DateTime ma przeciążone operatory porównania (<, >, <=, >=, ==) więc:
  1. if (new DateTime('today') > new DateTime('3 days ago')) {
  2.  
  3. }
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: 27.09.2025 - 09:45