Jesteś tutaj: webmade.org >> porady >> php + mysql
autor: Patryk 'yarpo' Jar, ostatnia modyfikacja: 2007-08-17
Przyjmijmy, że mamy dwa zdarzenia. Początek i koniec wycieczki. I są one umieszczone w bazie danych (obie kolumny mają typ datetime), więc zapisane są w taki sposób:
yyyy-mm-dd hh:mm:ss
Jak więc obliczyć ile dni / miesiący / lat dzieli te dwa zdarzenia... Nie da się ich od siebie w takiej formie odjąć, gdyż są to w PHP zwykłe ciągi znaków...
Można zaproponuję, więc moje rozwiązanie. Najpierw sprowadźmy to na ziemię, czyli do uniksowego znacznika czasu:
function uniksowy_znacznik_czasu($start, $koniec) { $start = strtotime($start); $koniec = strtotime($koniec); return $koniec-$start; }
Tym sposobem uzyskaliśmy różnicę między tymi dwoma zdarzeniami wyrażoną w sekundach. No, ale wynik np: „23454323sekund byłeś poza granicami Polski” nikogo na stronie nie zadowoli. Skorzystajmy więc z kolejnej funkcji:
function uniksowy2liczb($czas) { $wynik = array(); // zmienne pomocne przy obliczeniach (dlugość w sekundach) $tydzien = 7*24*60*60; $dzien = 24*60*60; $godzina = 60*60; $minuta = 60; if (($wynik[0] = intval($czas/$tydzien))) $czas %= $tydzien; if (($wynik[1] = intval($czas/$dzien))) $czas %= $dzien; if (($godzina[2] = intval($czas/$godzina))) $czas %= $godzina; $wynik[3] = intval($czas/$minuta); return $wynik; }
Po odpowiednim wywołaniu tych funkcji otrzymujemy tablicę, w której na kolejnych pozycjach znajdują się coraz mniejsze „jednostki czasu”. Oczywiście można zrezygnować z tygodni i zostawić same dni, czy też godziny. Jednak to niech już będzie zabawa dla ciekawskich :).
Warto byłoby także zapoznać się z:
Patryk 'yarpo' Jar
szukaj: obliczanie czasu między datami php
Osoby czytające tę publikację przeglądały również:
© 2004-2008 copyright by webmade.org