Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php] Różnica pomiędzy jedną datą, a drugą, w formacie RRRR-MM-DD GG:MM:SS
nexis
post 27.07.2006, 17:35:00
Post #1





Grupa: Zarejestrowani
Postów: 1 012
Pomógł: 109
Dołączył: 26.09.2003
Skąd: nexis.pl

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


Witam,

mam w bazie danych MySQL pole typu "DATETIME" i jego domyślny format to: RRRR-MM-DD GG:MM:SS czyli np. 2006-07-27 17:50:42.

Pobieram tą informację aby wyświetlić użytkownikowi, kiedy ostatnio logował się do systemu. Chciałbym także wyświetlić ile czasu od wtedy minęło. Wiadomo, że muszę do tego pobrać aktualną datę i czas robiąć to np. tak:

  1. <?php
  2. $date = date('Y-m-d H:i:s');
  3. ?>


Ale jak teraz porównać te dwie daty wyświetlić różnicę w ładnym formacie, np.:

Minęło 4 dni, 5 godzin, 14 minut i 16 sekund od Twojej ostatniej wizyty?

Próbowałem użyć normalnego odejmowania, ale niestety jej wynikiem jest zero. smile.gif

Ten post edytował nexis 27.07.2006, 17:36:23


--------------------
Zend Certified Engineer

Kliknij POMÓGŁ jeśli moja odpowiedź okazała się użyteczna!
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 4)
Jim
post 27.07.2006, 17:48:26
Post #2





Grupa: Zarejestrowani
Postów: 111
Pomógł: 0
Dołączył: 27.07.2005

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


najlepiej porównać timestamp'y, czyli zastosuj na obie daty strtotime() i porównaj jak zwykłe liczby.
Go to the top of the page
+Quote Post
-Gość-
post 27.07.2006, 17:48:41
Post #3





Goście







strtotime" title="Zobacz w manualu php" target="_manual
Go to the top of the page
+Quote Post
no_face
post 27.07.2006, 21:49:34
Post #4





Grupa: Zarejestrowani
Postów: 346
Pomógł: 23
Dołączył: 28.11.2004

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


Mi sie wydaje, ze prostrza metoda byloby operowanie na uniksowym znaczniku czasu, spokojnie mozna w ten czas odejmowac, dodawac itd poniewaz sa to sekundy. W czasie gdy chcesz pokazac odpowiednio sformatowana date, uzywaz date();
Kod
date('Y-m-d H:i:s', $czas);
Go to the top of the page
+Quote Post
acztery
post 27.07.2006, 22:09:55
Post #5





Grupa: Zarejestrowani
Postów: 945
Pomógł: 7
Dołączył: 15.03.2005
Skąd: katowice

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


  1. <?php
  2. $teraz=gmmktime(); // aktualna data
  3. $dzien=gmmktime(13,53,11,04,24,2002); // 2002.04.24 - 13:53:11
  4.  
  5. // wyliczanie roznicy
  6. $sekund = abs($teraz-$dzien);
  7. $minut = (int)($sekund/60);
  8. $godzin = (int)($minut/60);
  9. $dni = (int)($godzin/24);
  10. $lat = (int)($dni/365);
  11.  
  12. // wyliczanie calego okresu
  13. $sekund = (int)($sekund-$minut*60);
  14. $minut = (int)($minut-$godzin*60);
  15. $godzin = (int)($godzin-$dni*24);
  16. $dni = (int)($dni-$lat*365);
  17.  
  18. echo "lat: $lat; dni: $dni; godzin: $godzin; minut: $minut; sekund: $sekund";
  19. ?>
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: 14.08.2025 - 06:56