2010-07-14 6 views
10

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

Répondre

6

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'} 
+0

Merci, mais je ne peux pas en utilisant le code PHP. Peut-être est-ce une décision avec seulement Smarty? – lolalola

+0

Il existe maintenant d'autres réponses qui dépendent entièrement de smarty et ne nécessitent pas de code PHP – skrilled

18

{$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.

+0

Cela fonctionne également sur Smarty 2 je peux confirmer. – crmpicco

3

Vous pouvez utiliser strtotime() directement comme modificateur.

{"+20 days"|strtotime|date_format:"Y/m/d"} 
1

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"}

-1

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); 
0
{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'}