Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] Różnica pomiędzy jedną datą, a drugą
Forum PHP.pl > Forum > Przedszkole
nexis
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
Jim
najlepiej porównać timestamp'y, czyli zastosuj na obie daty strtotime() i porównaj jak zwykłe liczby.
no_face
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);
acztery
  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. ?>
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.