V dnešnom článku nájdete návod, ako vypísať čas „v ľudskom formáte“. Teda namiesto presného času nejakej akcie budeme vypisovať kedy k danej akcii došlo. Napríklad „pred minútou“, „pred 4 hodinami“, „včera“…
Samozrejme možností ako vyriešiť tento problém je viac, ale ja som si vytvoril nasledovnú funkciu presne spĺňajúcu moje požiadavky.
function human_time($time, $threshold = 1) { $current_time = time(); $diff = $current_time - $time; if($diff < $threshold) return 'teraz'; if($diff < 60) { $diff = round($diff); return 'pred ' . sklonuj($diff, 'sekundou', '% sekundami', '% sekundami'); } if($diff < 3600) { $diff = round($diff / 60); return 'pred ' . sklonuj($diff, 'minútou', '% minútami', '% minútami'); } if($diff < 3600*24) { $diff = round($diff / 3600); return 'pred ' . sklonuj($diff, 'hodinou', '% hodinami', '% hodinami'); } if($diff < 3600*24*7) { $diff = round($diff / (3600 * 24)); if($diff == 1) return "včera"; return 'pred ' . sklonuj($diff, 'dňom', '% dňami', '% dňami'); } $diff = round($diff / (3600 * 24 * 7)); return 'pred ' . sklonuj($diff, 'týždňom', '% týždňami', '% týždňami'); }
Použitie je veľmi jednoduché. Prvý povinný parameter je čas akcie (unix time), ktorý chceme vypísať a druhým nepovinným parametrom je prah (prednastavená je jedna sekunda), kedy sa bude vypisovať „teraz“.
// v $time je čas vykonania akcie... human_time($time);
Ak ste čítali pozorne, tak ste si všimli, že v kóde je použitá funkcia sklonuj()
, ktorú nájdete v článku o skloňovaní v PHP.
A ešte jedna vec. Vo WordPresse nájdete funkciu human_time_diff(), ktorá robí to isté, avšak v závislosti od použitia môže nastať problém so skloňovaním (napríklad pri slovenčine) a aj preto som si napísal pre tento účel vlastnú funkciu.
Pridaj komentár