Utilisation des filtres de date (SPIP1.8)
SPIP offre une grande variété de formats de date, enrichie dans la version 1.8 par le format PHP. Mais ceux d’entre vous, qui ne connaissent pas le format de date PHP, passent à côté d’une possibilité intéressante. C’est le but de cette modeste contrib.
Filtres date SPIP
Commençons par un récapitulatif des filtres date disponibles, jusqu’à la version 1.8.1 (voir http://www.spip.net/fr_article901.html). On prendra comme exemple de date le "1er juillet 2005 12:30:00" et comme exemple alternatif "7 juin 2004 12:30:00" :
| Nom du filtre | Commentaire | Exemple |
|---|---|---|
| affdate | affiche la date sous forme de texte | 1er juillet 2005 |
| affdate_jourcourt | affiche le numéro du jour et le nom du mois (si la date est dans l’année en cours) | 1er juillet |
| - idem - | si la date n’est pas dans l’année en cours, on rajoute l’année | 7 juin 2004 |
| affdate_court | affiche le numéro du jour et le nom du mois (si la date est dans l’année en cours) | 1er juillet |
| - idem - | si la date n’est pas dans l’année en cours , on affiche le nom du mois et l’année | Juin 2004 |
| affdate_mois_annee | affiche seulement le mois et l’année | juillet 2005 |
| jour | affiche le jour (en nombre) | 1er |
| mois | affiche le mois (en nombre) | 07 |
| annee | affiche l’année | 2005 |
| heures | affiche l’heure | 12 |
| minutes | affiche les minutes | 30 |
| secondes | affiche les secondes | 00 |
| nom_jour | affiche le nom du jour (lundi, mardi...) | vendredi |
| nom_mois | affiche le nom du mois (janvier, février...) | juillet |
| saison | affiche la saison (hiver, été...) | été |
Présentation du filtre affdate
La nouveauté est que maintenant le filtre affdate peut recevoir une chaîne de caractères comme argument. Cette chaîne de caractères utilise les codes date de la fonction PHP date(), que vous pouvez voir en fin de cette page.
[(#DATE|affdate{"***format PHP***"})]
où "***format PHP***" est un mélange de texte et de codes date PHP, tel que :
les codes date sont interprétés par le filtre
les autres caractères servent de "remplissage" et sont rendus tels quels.
Exemples
Prenons le même exemple 7 juin 2004 12:30:00 :
Afficher "07/06/2004"
[(#DATE|affdate{'d/m/Y'})]
où
d indique le jour sur 2 chiffres, m est le mois sur 2 chiffres, et Y l’année sur 4 chiffres,
/ servira de "remplissage", car il n’est pas dans le tableau des codes de date.
Afficher "Ce 7/6 à 12:30"
[(#DATE|affdate{"Ce j/n à H:i"})]
j est le jour sans "0" devant, n est le numéro de mois sans "0" devant, H est l’heure sur 24h et i représente les minutes sur 2 chiffres.
ni /, ni C, ni e, ni l’espace ne sont dans le tableau : ils seront rendus tels quels.
Mais si vous faîtes :
[(#DATE|affdate{"Le j/n à H:i"})]
vous aurez "0e 16 à 12:30", car "L" a une signification dans le format date PHP. En règle générale il vaut mieux réserver la ponctuation, les caractères spéciaux et les lettres accentuées au "remplissage", PHP étant susceptible d’étendre son format date à d’autres caractères non accentués.
Afficher "24° semaine, 158° jour de l’année 2004"
[(#DATE|adddate{'W'})]° semaine, [(#DATE|adddate{'z'})]° jour de l'année [(#DATE|adddate{'Y'})]
W indique le numéro de semaine, z le numéro de jour dans l’année et Y toujours l’année sur 4 chiffres,
Afficher la date ISO 8601
Utile, par exemple, pour afficher les dates dans le sitemap de Google (nécessite PHP5) :
[(#DATE|affdate{'c'})]
Affiche : "2004-06-07T12:30:00+02:00". Mais dans le cas du sitemap Google, la date YYYY-MM-JJ suffit (ne nécessite pas PHP5) :
[(#DATE|affdate{'Y-m-d'})]
Tableau des codes de date PHP
Voici les codes de date PHP (extraits du manuel PHP) :
| Caractère | Description | Exemple de valeur |
| a | Ante meridiem et Post meridiem en minuscules | am ou pm |
| A | Ante meridiem et Post meridiem en majuscules | AM ou PM |
| B | Heure Internet Swatch | 000 à 999 |
| c | Date au format ISO 8601 (ajouté en PHP 5) | 2004-02-12T15:19:21+00:00 |
| d | Jour du mois, sur deux chiffres (avec un zéro initial) | 01 à 31 |
| D | Jour de la semaine, en trois lettres (et en anglais) | Mon à Sun [1] |
| F | Mois, textuel, version longue ; en anglais, comme January ou December | January à December [1] |
| g | Heure, au format 12h, sans les zéros initiaux | 1 à 12 |
| G | Heure, au format 24h, sans les zéros initiaux | 0 à 23 |
| h | Heure, au format 12h, avec les zéros initiaux | 01 à 12 |
| H | Heure, au format 24h, avec les zéros initiaux | 00 à 23 |
| i | Minutes avec les zéros initiaux | 00 à 59 |
| I (i majuscule) | L’heure d’été est activée ou pas | 1 si oui, 0 sinon. |
| j | Jour du mois sans les zéros initiaux | 1 à 31 |
| l (L minuscule) | Jour de la semaine, textuel, version longue, en anglais | Sunday à Saturday [1] |
| L | Est ce que l’année est bissextile | 1 si bissextile, 0 sinon. |
| m | Mois au format numérique, avec zéros initiaux | 01 à 12 |
| M | Mois, en trois lettres, en anglais | Jan à Dec [1] |
| n | Mois sans les zéros initiaux | 1 à 12 |
| O | Différence d’heures avec l’heure de Greenwich (GMT), exprimée en heures | Exemple : +0200 |
| r | Format de date RFC 822 | Exemple : Thu, 21 Dec 2000 16:01:07 +0200 [1] |
| s | Secondes, avec zéros initiaux | 00 à 59 |
| S | Suffixe ordinal d’un nombre pour le jour du mois, en anglais, sur deux lettres | st, nd, rd ou th. Fonctionne bien avec j [1] |
| t | Nombre de jours dans le mois | 28 à 31 |
| T | Fuseau horaire du serveur | Exemples : EST, MDT ... |
| U | Secondes depuis l’époque Unix (1er Janvier 1970, 0h00 00s GMT) | Voir aussi time() |
| w | Jour de la semaine au format numérique | 0 (pour dimanche) à 6 (pour samedi) |
| W | Numéro de semaine dans l’année ISO-8601, les semaines commencent le lundi (ajouté en PHP 4.1.0) | Exemple : 42 (la 42ème semaine de l’année) |
| Y | Année, 4 chiffres | Exemples : 1999 et 2003 |
| y | Année, 2 chiffres | Exemples : 99 et 03 |
| z | Jour de l’année | 0 à 366 |
| Z | Décalage horaire en secondes. Le décalage des zones à l’ouest de la zone UTC est négative, et à l’est, il est positif. | -43200 à 43200 |
Voilà les principes et les codes date. A vous de jouer !

