Jak v šabloně získat uplynulý čas od přijetí objednávky
- kloban
- Člen | 123
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
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.
- kloban
- Člen | 123
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}