formatovani dateinterval v latte
- Ondřej Kubíček
- Člen | 494
{php $foo->format('%d.%i')}
ti nemůže nic vypsat, protože
tohle makro spouští php, takže bys tam musel napsat ještě
echo
nicméně tohle {$foo->format('%d.%i')}
ti musí normálně
fungovat
- vbelco
- Člen | 7
jaj fakt. No som to ja… Vdaka moc.
A ide to aj nejakym latte-oidnym sposobom?
V tabulke vypisujem 3 udaje: prichod, odchod a cas. Prve dva udaje su DateTime
a treti DateInterval.
Prve dva udaje vypisujem cez filtre a treti musim cez php. Rad by som to
zjednotil. Da sa to?
Priklad:
<td>{$post2[‚prichod‘]|date:„d. m. Y G:i:s“}</td> {*prichod
formatovany cez latte filter *}
<td>{$post2[‚odchod‘]|date:„d. m. Y G:i:s“}</td> {*odchod
formatovany cez latte filter *}
<td>{php echo $post2[‚cas_v_praci‘]->format(„%d. %i“)
}</td> {*cas formatovany cez php*}
- factor
- Člen | 28
Nightfish byl rychlejší, ale i tak
Příprava dat (presenter)
public function renderDefault()
{
$dochazka = new ArrayHash();
$dochazka[0] = new ArrayHash();
$dochazka[0]->prichod = new DateTime('7.6.2018 8:00');
$dochazka[0]->odchod = new DateTime('7.6.2018 17:30');
$dochazka[0]->vPraci = $dochazka[0]->odchod->diff($dochazka[0]->prichod);
$dochazka[1] = new ArrayHash();
$dochazka[1]->prichod = new DateTime('8.6.2018 8:15');
$dochazka[1]->odchod = new DateTime('8.6.2018 17:30');
$dochazka[1]->vPraci = $dochazka[1]->odchod->diff($dochazka[1]->prichod);
$dochazka[2] = new ArrayHash();
$dochazka[2]->prichod = new DateTime('9.6.2018 9:00');
$dochazka[2]->odchod = new DateTime('9.6.2018 16:12');
$dochazka[2]->vPraci = $dochazka[2]->odchod->diff($dochazka[2]->prichod);
$this->template->dochazka = $dochazka;
}
Šablona
<table class="table table-bordered table-hover table-striped">
<thead>
<tr>
<th>Datum</th>
<th>Příchod</th>
<th>Odchod</th>
<th>Čas v práci</th>
</tr>
</thead>
<tbody>
<tr n:foreach="$dochazka as $row">
<th>{$row->prichod|date:'%d.%m'}</th>
<td>{$row->prichod|date:'%H:%M'}</td>
<td>{$row->odchod|date:'%H:%M'}</td>
<td>{$row->vPraci|date:'%h:%i'}</td>
</tr>
</tbody>
</table>
Update: Pozor, při použití filteru date na proměnnou ve formátu interval musíš použít strftime zápis
Editoval factor (8. 6. 2018 9:42)
- nightfish
- Člen | 519
@factor napsal(a):
Update: Pozor, při použití filteru date na proměnnou ve formátu interval musíš použít strftime zápis
Pozor, tohle není pravda. strftime()
používá jiné modifikátory než DateInterval::format()
. Třeba
%I ve strftime()
jsou hodiny (1–12), zatímco v
DI::format()
to znamená minuty (01–59). A aby se odlišil
DateTime::format()
, tak ten neuvozuje jednotlivé znaky
formátovacího řetězce znakem procenta.
Ukázka rozdílů: https://3v4l.org/1WLVk