PHP: Vypísanie času trochu ináč

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.

<br />
function human_time($time, $threshold = 1) {<br />
	$current_time = time();</p>
<p>	$diff = $current_time - $time;</p>
<p>	if($diff &lt; $threshold)<br />
		return 'teraz';</p>
<p>	if($diff &lt; 60) {<br />
		$diff = round($diff);<br />
		return 'pred ' . sklonuj($diff, 'sekundou', '% sekundami', '% sekundami');<br />
	}</p>
<p>	if($diff &lt; 3600) {<br />
		$diff = round($diff / 60);<br />
		return 'pred ' . sklonuj($diff, 'minútou', '% minútami', '% minútami');<br />
	}</p>
<p>	if($diff &lt; 3600*24) {<br />
		$diff = round($diff / 3600);<br />
		return 'pred ' . sklonuj($diff, 'hodinou', '% hodinami', '% hodinami');<br />
	}</p>
<p>	if($diff &lt; 3600*24*7) {<br />
		$diff = round($diff / (3600 * 24));<br />
		if($diff == 1)<br />
			return &quot;včera&quot;;<br />
		return 'pred ' . sklonuj($diff, 'dňom', '% dňami', '% dňami');<br />
	}</p>
<p>	$diff = round($diff / (3600 * 24 * 7));<br />
	return 'pred ' . sklonuj($diff, 'týždňom', '% týždňami', '% týždňami');<br />
}<br />

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“.

<br />
// v $time je čas vykonania akcie...<br />
human_time($time);<br />

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.

Jeden komentár k “PHP: Vypísanie času trochu ináč”

  1. Zabudol si este vymenit % za Int,

    echo human_time($nejakyCas); // vypise pred „pred % tyzdnami“

    ale inak dobry napad..

Pridaj komentár

Vaša e-mailová adresa nebude zverejnená. Vyžadované polia sú označené *