je reçois la date avec: {$smarty.now|date_format:'%Y-%m-%d %H:%M:%S'}
smarty et la date
Mais comment obtenir 20 jours après?
Si maintenant: 2010 05 05 12:12:12
, je veux montrer 2010 25 05 12:12:12
je reçois la date avec: {$smarty.now|date_format:'%Y-%m-%d %H:%M:%S'}
smarty et la date
Mais comment obtenir 20 jours après?
Si maintenant: 2010 05 05 12:12:12
, je veux montrer 2010 25 05 12:12:12
Utilisez la fonction strtotime()
php et affecter votre variable à Smarty. Quelque chose comme ceci:
<?php
$later = strtotime('+20 day');
$smarty->assign('later', $later);
?>
Ensuite, dans le modèle:
{ $later|date_format:'%Y-%m-%d %H:%M:%S'}
{$smarty.now}
est un horodatage simple (nombre de secondes depuis 1970). Ainsi, vous pouvez simplement ajouter autant de secondes à ce que vous avez besoin:
{$smarty.now+20*24*60*60|date_format:'%Y-%m-%d %H:%M:%S'} //+20 days
Cela fonctionne dans Smarty3, sinon dans les anciennes versions, vous devrez peut-être faire le calcul avec {assign}
et/ou {math}
directives.
Cela fonctionne également sur Smarty 2 je peux confirmer. – crmpicco
Vous pouvez utiliser strtotime() directement comme modificateur.
{"+20 days"|strtotime|date_format:"Y/m/d"}
Dans les versions les plus récentes de Smarty il StrToTime une chaîne que vous PREPEND
à savoir au lieu de faire {$smarty.now|date_format:'%Y-%m-%d %H:%M:%S'}
vous pouvez également faire {"now"|date_format:'%Y-%m-%d %H:%M:%S'}
Pour obtenir la date de 20 jours à partir de maintenant, vous pouvez faire:
{"+20 days"|date_format:"%Y-%m-%d"}
Testés dans Smarty: Ajouter 1 jour, 2 jours ..... .365 jours en date dynamique.
$one= date("Y-m-d", strtotime(date("Y-m-d", strtotime('$add dynamic date variable')) . " + 1 day"));
$this->smarty->assign('one',$one);
$two= date("Y-m-d", strtotime(date("Y-m-d", strtotime('$add dynamic date variable')) . " + 2 day"));
$this->smarty->assign('two',$two);
...
..
$oneyear= date("Y-m-d", strtotime(date("Y-m-d", strtotime('$add dynamic date variable')) . " + 365 day"));
$this->smarty->assign('oneyear',$oneyear);
{assign var="iItemOne" value=$smarty.now}
{assign var="iItemTwo" value=1296000} //60*60*24*15-> for 15 days
{assign var="iSum" value=$iItemOne+$iItemTwo}
{$iSum|date_format:'%Y-%m-%d %H:%M:%S'}
Merci, mais je ne peux pas en utilisant le code PHP. Peut-être est-ce une décision avec seulement Smarty? – lolalola
Il existe maintenant d'autres réponses qui dépendent entièrement de smarty et ne nécessitent pas de code PHP – skrilled