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.

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.

Súvisiace články:

1 komentár pri “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é *

*

Môžete použiť tieto HTML značky a atribúty: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>