Jak v šabloně získat uplynulý čas od přijetí objednávky

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
kloban
Člen | 123
+
0
-

Ahoj,
v databázi si u káždé objednávky pomoci new DateTime ukládám datum přijetí objednávky.
V šabloně pak objednávky vypíši a chtěl bych u každé vidět před jakou dobou byla objednávka vytvořena.

Zkoušel jsem si uložit do proměnné šablony aktuální datum a pak odečítat aktuální datum od data přijetí, ale to se mi nedařilo.

Díky za případné nápady jak na to.

kloban
Člen | 123
+
0
-

Problém jsem již vyřešil pomocí helperu timeAgoInWords. Teď ale řeším již další problém, kde skutečně v šabloně potřebuji získat počet sekund od objednání.

Chtěl jsem použít zmíněný http://php.net/…ime.diff.php ale nedaří se mi s ním v šabloně pracovat.

V šabloně mám

{var $datetime1 = $objednavkaPolozka->casPrijeti}
{var $datetime2 = $aktualniDatum}
{$datetime1->diff($datetime2)}

A laděnka hlásí
`htmlspecialchars() expects parameter 1 to be string, object given `

Díky za nápady.

iguana007
Člen | 970
+
0
-

Podle mě, by si tam měl mít na tom posledním řádku něco jako (píšu z hlavy):

{var $datetime1 = $objednavkaPolozka->casPrijeti}
{var $datetime2 = $aktualniDatum}
{$datetime1->diff($datetime2)->format('s')}
kloban
Člen | 123
+
0
-

Díky za navedení.
Správně by bylo

{$datetime1->diff($datetime2)->format('%s')}

ale problém je, že to vrací vteřiny, ale pokud bude objednávka stará 5 minut a 6 vteřin, tak to nevrátí 66, ale jen těch 6.

Na http://php.net/…l.format.php#… je v diskuzi ukázána tato funkce to_second.

Můj výsledný kód je tedy takovýto:

{var $datetime1 = $objednavkaPolozka->casPrijeti}
{var $datetime2 = $aktualniDatum}
{var $interval = $datetime1->diff($datetime2)}

{var $vysledek = ($interval->y * 365 * 24 * 60 * 60) +
     		     ($interval->m * 30 * 24 * 60 * 60) +
			     ($interval->d * 24 * 60 * 60) +
			     ($interval->h * 60 * 60) +
			     ($interval->i * 60) +
			      $interval->s;
}
{$vysledek}
Šaman
Člen | 2659
+
0
-

Tohle bych nedělal přes diff, ale přes timestampy (pokud nehrozí nějaké sto let staré datumy). Rozdíl timestampů je přímo interval ve vteřinách.