SPIP-Contrib

SPIP-Contrib

عربي | Deutsch | English | Español | français | italiano | Nederlands

286 Plugins, 197 contribs sur SPIP-Zone, 229 visiteurs en ce moment

Accueil > Dates, calendriers et agendas > Formats de dates > Utilisation des filtres de date SPIP

Utilisation des filtres de date SPIP

à partir de SPIP 1.8

8 juin 2005 – par marabbeh – 23 commentaires

10 votes

Pour ceux qui ne connaissent pas PHP, voici décrites les nombreuses possibilités du filtre affdate.

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 filtreCommentaireExemple
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é
date_interface affiche il y a ... secondes, minutes, heures il y a 10 minutes

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'})]

-  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|affdate{'W'})]° semaine, [(#DATE|affdate{'z'})]° jour de l'année [(#DATE|affdate{'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'})]

Critère pour comparer une date sans les heures et secondes

Si votre champ date contient les heures et les secondes, et que vous voulez faire une boucle avec un critère qui ne compare que le jour, relativement à une date de référence, et sans tenir compte des heures, minutes et secondes, le critère de votre boucle peut être :
 {annee=#GET{dateref}|annee}  {mois=#GET{dateref}|mois}  {jour=#GET{dateref}|jour}
mais plus simplement il peut aussi être :
{date LIKE #GET{dateref}|affdate{'Y-m-d'}|concat{%}}

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 42e 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 !

P.-S.

Si vous avez besoin de créer vos propres filtres date, sachez que les dates SPIP sont au format datetime MySql « AAAA-MM-JJ HH:MM:SS », soit 2004-06-07 12:30:00 pour le 07/06/2004 12:30.

Notes

[1Malheureusement non traduit dans d’autres langues que l’anglais

Dernière modification de cette page le 25 juin 2015

Retour en haut de la page

Vos commentaires

  • Le 27 octobre 2012 à 18:26, par Spipnaute En réponse à : Utilisation des filtres de date SPIP

    Bonjour, quelqu’un pourrait me dire comment je peux faire pour supprimer la petite flèche et le signe d’interrogation qui s’affichent quand je pointe la souris sur la date de publication d’un article ? J’ai déjà supprimé [ title=« (#DATE|date_iso) » pour éliminer l’affichage de la date en format ISO qui apparaissait avec la petite flèche en question. Je veux juste conserver ma date ainsi : Lunes 21 de noviembre de 2011.

    Gracias mil.

    Répondre à ce message

  • Le 14 février 2008 à 16:21, par Jacques En réponse à : Utilisation des filtres de date SPIP

    Actuellement, février apparaît comme « f ?vrier ». Quel fichier faut-il modifier pour afficher le caractère accentué.
    voir : http://www.cyber-langues.asso.fr/spip.php?article42
    merci pour toute réponse

    • Le 18 février 2008 à 10:41, par Jacques En réponse à : Utilisation des filtres de date SPIP

      Le langage par défaut de spip, pour le site, est UTF-8. je ne comprends pas que les dates, et seulement elles, s’affichent avec le code Latin 1. Je n’ai pas rencontré ce problème avec les autres sites Spip que j’ai créés.

      Quelqu’un aurait-il une solution ? Ce site serait bilingue sans le savoir ?

    Répondre à ce message

  • Le 10 février 2007 à 00:26, par GK-R En réponse à : Affichage temps écoulé depuis la publication d’un article

    Salut !

    Peut-on au lieu d’afficher la date de publication d’un article, afficher article publié il y a 20 minutes par exemple ? Ce serait sympa !

    Répondre à ce message

  • Le 20 février 2006 à 14:51, par Voldor En réponse à : Utilisation des filtres de date SPIP 1.8

    Je cherche une boucle qui me permettrait de sortir un article créé le même jour, même mois que la date du jour.

    C’est pour cette page-là : http://www.belissor.net/

    Actuellement, je mets à jour à la main en changeant la date de l’article !!! Mais je voudrais (bien sûr !) que cela « se fasse tout seul » ;-)

    Je suis assez néophyte (voire très néophyte) en programmation mais devenue assez experte en « copier/coller/tester » ;-))

    Alors si quelqu’un avait quelque chose dans ses archives pour me venir en aide...

    Je cherche cela depuis deux ans et viens de passer le site en Spip 1 8 2g...

    Grand merci par avance à ceux qui pourront me donner une piste ;-)

    Répondre à ce message

  • Le 9 juin 2005 à 11:16, par Franck En réponse à : > Utilisation des filtres de date SPIP 1.8

    Un petit filtre de date supplementaire :

    (#DATE

    Celui-ci test la date du serveur et affiche « Aujourd’hui », « Hier » ou un simple « affdate_court » sinon.

    <?php

    function dayoftheyear($date){
           
            $timestamp = strtotime($date);
            $dayoftheyear = date('z',$timestamp);

            return $dayoftheyear;
    }

    function friendlyday($date){

            $articledayoftheyear = dayoftheyear($date);
            $today = date('z');

            if($today==$articledayoftheyear) {
               $date = 'Aujourd\'hui';
            } elseif(($today!=0 and $today==$articledayoftheyear+1)or($today==0 and $articledayoftheyear==365)) {
                    $date = 'Hier';
            } else {
               $date = affdate_court($date);
            }

            return $date;
    }

    function dayoftheyear($date){
           
            $timestamp = strtotime($date);
            $dayoftheyear = date('z',$timestamp);

            return $dayoftheyear;
    }

    ?>
    • Le 9 juin 2005 à 15:00, par marabbeh En réponse à : > Utilisation des filtres de date SPIP 1.8

      Pas mal comme filtre. Et ça montre comment transformer la date SPIP (MySql) en date PHP avec strtotime().

      Mais la fonction dayoftheyear() est déclarée 2 fois. Il faut supprimer l’une des 2.

    Répondre à ce message

  • Le 6 juin 2005 à 19:15, par ? En réponse à : > date

    Je voudrai comparer la date du jour avec la date d’un article :
    <?
       $date_art = "[(#DATE|affdate{'d-m-Y'})]";
       echo 'Date article : '.$date_art.'<br>';
       $date_jour = date("d-m-Y");
       echo 'Date du jour :'.$date_jour.'<br>';
       ?>

    ça ne marche pas car SPIP affiche tjs « 12 mai 2005 » et non « 12-05-2005 ».

    Est-ce qqn a une réponse ?

    • Le 9 juin 2005 à 11:22, par Franck En réponse à : > date

      Si tu connais un peu le php, tu peux creer tes filtres de DATE assez facilement. J’ai poste un exemple juste apres ton message.

      enregistre ta fonction sur mes_fonctions.php3 a la racine de ton site Spip.

    • Le 9 juin 2005 à 14:56, par marabbeh En réponse à : > date

      1. Il faudrait mettre ton code entre balises <code>, sinon on ne sait pas trop ce que tu as voulu faire
      2. Ensuite :
      • Soit tu fais tout en PHP
      • Soit tu crées un filtre ce qui est préférable

    Répondre à ce message

  • Le 3 juin 2005 à 09:50, par Chrishoo En réponse à : > Utilisation des filtres de date SPIP 1.8

    Bonjour,

    j’ai une question concernant les filtres dates. Je cherche à afficher la date au format : « 1er janvier à 12h44 ». J’utilise aujourd’hui (#DATE à (#DATE(#DATE, ce qui me donne « 1er janvier 2005 à 12h44 ». Quelqu’un a-t-il une idée sur la façon de procéder ?

    • Le 3 juin 2005 à 10:06, par ? En réponse à : > Utilisation des filtres de date SPIP 1.8

      as-tu essayé [(#DATE|jour)] [(#DATE|mois)]  ?

    • Le 4 juin 2005 à 08:45, par Bastian En réponse à : > Utilisation des filtres de date SPIP 1.8

      Je dirais plutôt :

      [(#DATE|jour)] [(#DATE|nom_mois)]
    • Le 7 juin 2005 à 00:36, par ? En réponse à : > Utilisation des filtres de date SPIP 1.8

      Oui j’ai essayé tout ça mais ça me donne 1 janvier au lieu de 1er janvier :(

    • Le 7 juin 2005 à 08:55, par BMR En réponse à : > Utilisation des filtres de date SPIP 1.8

      Il te reste qu’à te faire ton propre filtre pour le jour :

      function jour_perso($date) {
        return str_replace("1", "1er", date("j", $date));
      }

      et faire [(#DATE|jour_perso)] [(#DATE|nom_mois)]...

    • Le 7 juin 2005 à 09:28, par BMR En réponse à : > Utilisation des filtres de date SPIP 1.8

      Erreur de ma part, c’est plutôt :

      function jour_perso($date) {
         return preg_replace("/^1$/", "1er", date("j", $date));
      }
    • Le 7 juin 2005 à 10:02, par BMR En réponse à : > Utilisation des filtres de date SPIP 1.8

      Désolé, je ne suis pas réveillé ce matin... $date n’est pas une date PHP mais MySql. Donc ça ne peut pas marcher ces tentatives de filtre ! Ma suggestion (je ne peux laisser des conneries, mais il y a peut-être mieux) :

      function jour_perso($date) {
         if (preg_match("/^(2\d{3})-(\d\d)-(\d\d).+$/", $date, $elts)) {
             return ($elts[3] == "01") ? "1er" : (int) $elts[3];
         }
         else return null;
      }
    • Le 9 juin 2005 à 14:02, par DoriaN En réponse à : > Utilisation des filtres de date SPIP 1.8

      la réponse est maintenant dans le premier tableau de l’article (depuis qu’il a été mis à jour)
      D.

    Répondre à ce message

Répondre à cet article

Qui êtes-vous ?

Pour afficher votre trombine avec votre message, enregistrez-la d’abord sur gravatar.com (gratuit et indolore) et n’oubliez pas d’indiquer votre adresse e-mail ici.

Ajoutez votre commentaire ici Les choses à faire avant de poser une question (Prolégomènes aux rapports de bugs. )
Ajouter un document

Retour en haut de la page

Ça discute par ici

  • Mailsubscribers

    16 janvier 2013 – 274 commentaires

    Ce plugin permet de gérer les inscriptions (ou abonnements) à la diffusion de contenu par email. Mailsubscribers permet de gérer les inscriptions par Opt-in simple ou double et la désinscription par URL. Ce plugin gère également plusieurs listes (...)

  • noiZetier v2

    9 novembre 2012 – 36 commentaires

    Le noiZetier offre une interface d’administration permettant d’insérer au choix des éléments modulaires de squelettes (noisettes) et de les ajouter ainsi à ses squelettes. Compatibilité La version 2 du noizetier fonctionne sous SPIP 3. Elle est (...)

  • cirr : plugin « rédacteur restreint »

    29 octobre 2010 – 60 commentaires

    Ce plugin « cirr : rédacteur restreint » permet d’affecter des rubriques aux rédacteurs et modifie les droits afin qu’un rédacteur restreint (ou un administrateur restreint) voit dans l’espace privé uniquement les rubriques qui lui sont affectées (et leur (...)

  • Un retour d’expérience d’utilisation de Formidable

    26 octobre – commentaires

    Il s’agissait de créer un formulaire d’inscription à un évènement modérer les inscriptions dans le privé publier les inscriptions dans le public Nous avons discuté de cette présentation lors de l’apéro SPIP du 15 février 2016 à la Cantine (...)

  • Métas +

    3 décembre – 14 commentaires

    Améliorez l’indexation de vos articles dans les moteurs et leur affichage sur les réseaux sociaux grâce aux métadonnées Dublin Core, Open Graph et Twitter Card. Installation Activer le plugin dans le menu dédié. Dans le panel de configuration, (...)

Ça spipe par là