Dates, vous avez dit dates?

Vous vous souvenez de ces temps reculés? Manipuler les dates était une plaie. Ce temps est révolu, Smarty entre dans le jeu.

La référence: la date en cours!

Code:
{$smarty.now}

affichera: 1575973750 , horodatage Unix (timestamp Unix)  sans formatage (à savoir le nombre de secondes écoulées depuis le 1/1/1970. On s'en balance mais comme ça, vous savez comment sont calculées les dates chez Unix)

Garçon! Un peu de formatage de date, svp:

Code:
1.{$smarty.now|date_format:"%d/%m/%y"}
2.{$smarty.now|date_format:"%D"}
3.{$smarty.now|date_format:"%A, le %d %B %Y"}
4.{$smarty.now|date_format:"%a, %d %b %y"}
5.{$smarty.now|date_format:"%d/%m/%y %H:%M:%S"}

retournera (c'est une autre manière de dire affichera en langage de programmeur. Parce que, pour afficher le résultat d'un programme, on utilise le terme return)

  1. 10/12/19
  2. 12/10/19
  3. mardi, le 10 décembre 2019
  4. mar., 10 déc. 19
  5. 10-12-19 11:29:10

Faisons joujou

Pour modifier une date, en règle générale, il fallait ajouter / ôter des secondes. Pour ajouter un an, il fallait convertir un an en secondes, bref, la galère...

Code:
1.{"+1 year"|date_format:"%d/%m/%Y"}
2.{"+1 day"|date_format:"%d"}
3.{yesterday|date_format:"%A, le %d %B %Y"}

retournera:

  1. 10/12/2020
  2. 11/12
  3. lundi, le 09 décembre 2019

Concrètement:

  1. Je dois afficher les 2 années couvrant une saison d'une, disons, équipe de basketball (par exemple Saison 2019-2020). Sachant qu'une année de basket commence en août d'une année et finit en juin de l'année suivante, je dois connaître le mois en cours pour savoir si je suis entre août et décembre ou entre janvier et juin.
Code:
{if ( (($smarty.now|date_format:"%m") > 8) && (($smarty.now|date_format:"%m") <= 12) )}
{$FromYear = $smarty.now|date_format:"%Y"}
{$ToYear = ("+1 year"|date_format:"%Y")}
{else}
{$FromYear = ("-1 year"|date_format:"%Y")}
{$ToYear = $smarty.now|date_format:"%Y"}
{/if}
Saison {$FromYear}-{$ToYear}

affichera Saison 2019-2020

Il s'agit d'un exemple pour illustrer les manipulations sur les dates.

On pourrait bien sûr simplifier ce code:

{if ( (($smarty.now|date_format:"%m") > 8) && (($smarty.now|date_format:"%m") <= 12) )}
{$FromYear = $smarty.now|date_format:"%Y"}
{else}
{$FromYear = ("-1 year"|date_format:"%Y")}
{/if}
Season {$FromYear}-{$FromYear+1}
Page précédente : Calendar in english Page suivante : Variables et tableaux.