Data i czas
- jaki jest dzień tygodnia?
funkcja date() ma wiele pożytecznych parametrów...
- W jaki sposób obliczać różnicę czasu?
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));czyli trzeba odjąć 70 lat (dla "Y" to by było 1970 lat), 1 miesiąc, 1 dzień i 1 godzinę.
echo ($d[0]-70).' lat, '.($d[1]-1).' miesięcy, '.($d[2]-1).' dni, '.($d[3]-1).':'.$d[4];