Lemat, strona prywatna

Data i czas

funkcja date() ma wiele pożytecznych parametrów...

Każdą datę można zamienić na liczbę sekund, które upłynęły od pewnego magicznego momentu. A liczba sekund to po prostu .... liczba.Liczby można dodawać, odejmować i oczywiście zamieniać z powrotem na daty.

funkcjami zamieniającymi są mktime() oraz date()

Jeżeli mamy 2 uniksowe znaczniki czasu (patrz funkcja time()) $czas1 i $czas2 to odejmując od siebie uzyskujemy liczbę sekund. Wydawałoby się, że podstawiając tą liczbę do funkcji date('Y-n-j H:i:s') uzyskamy piękny wynik różnicy z rozdzieleniem na lata, miesiące dni i godziny. Niestety uzyskamy wynik liczony od początku ery uniksowej czyli od pierwszego stycznia 1970. date('y-n-j H:i:s',3600) da wynik:

70-1-1 02:00:01

z tego też powodu trzeba wprowadzić pewną poprawkę:

$d=explode(' ',date ("y n j H i:s", $czas2-$czas1));
echo ($d[0]-70).' lat, '.($d[1]-1).' miesięcy, '.($d[2]-1).' dni, '.($d[3]-1).':'.$d[4];
czyli trzeba odjąć 70 lat (dla "Y" to by było 1970 lat), 1 miesiąc, 1 dzień i 1 godzinę.
Data utworzenia : 2003-11-07, data aktualizacji :2010-12-01

Skomentuj ten tekst

Komentarze:

thek
2008-12-17 08:18:50
W temacie tyczy się PHP...
...ale przecież można też skorzystać z bazy danych, zwłaszcza jeśli chodzi o operacje na datach czy czasie, które są tam moim zdaniem lepiej rozwiązane pod katem wygody piszącego skrypt. Wiem, że nie zawsze jest to możliwe (brak bazy na serwerze), ale jeśli mamy możliwość to czemu nie skorzystać? :)
Odpowiedź Lemata:
ale po co skoro to można rozwiązać natywnymi funkcjami PHP? to jest wyciąganie armaty na muchę.
Protected by spf
[Nospam-PL.NET]
Seti@Home
www.php.net
© Lemat 2004 - ∞