Např. u diskusních příspěvků nebo v CVS logu je někdy přehlednější zobrazovat místo přesného času pouze informaci o tom, před jak dlouhou dobou byl záznam vložen. Elegantně se tím také vyřeší problém rozdílnosti času u klienta a na serveru a problém časových pásem. Vzhledem k tomu, že při tisku nebo po uložení stránky se může informace o aktuálním čase ztratit, doporučoval bych uvádět tento údaj jenom jako doplněk přesného času, ale v některých případech je možné tento problém zanedbat.
Pro zobrazení relativního času se dá použít MySQL funkce TIMEDIFF:
<?php function sklonovani($num, $text_1, $text_2_4, $text_5) { return "$num " . (abs($num) == 1 ? $text_1 : ($num == 0 || abs($num) >= 5 ? $text_5 : $text_2_4)); } $result = mysql_query("SELECT *, TIMEDIFF(NOW(), vlozeno) AS diff FROM diskuse"); while ($row = mysql_fetch_assoc($result)) { $diff = explode(":", $row["diff"]); if ($diff[0] > 24) { echo "Vloženo před " . sklonovani(floor($diff[0] / 24), "dnem", "dny", "dny") . ".\n"; } elseif (intval($diff[0])) { echo "Vloženo před " . sklonovani(intval($diff[0]), "hodinou", "hodinami", "hodinami") . ".\n"; } else { echo "Vloženo před " . sklonovani(intval($diff[1]), "minutou", "minutami", "minutami") . ".\n"; } } mysql_free_result($result); ?>
Kód se dá samozřejmě rozšířit tak, aby zohledňoval i sekundy, měsíce nebo roky. Pokud funkce TIMEDIFF není k dispozici, dá se použít i rozdíl timestampů.
Diskuse je zrušena z důvodu spamu.