Utilisation du filtre
Ajouter le code du filtre dans votre fichier mes_fonctions.php
Vous pouvez ensuite utiliser le filtre selon la syntaxe
Il est possible d’ajouter un 2ème paramètre pour préciser le formatage de durée
Différents formatages de durée proposés
Voici les différents formatages proposés
| Valeur | Définition | Exemple |
|---|---|---|
| court | on arrondit à la durée la plus proche (formatage par défaut) | 4 semaines |
| etendu | affichage complet en lettres | 4 semaines 3 jours 23 heures 2 minutes |
| horaire | affichage heures et minutes | 2h04 |
| minute | affichage minutes cumulées | 124 |
| iso8601 | affichage selon la norme iso 8601 | P18Y9W4DT11H9M8S |
| ical | même chose que iso8601 | P18Y9W4DT11H9M8S |
Pour faciliter l’internationalisation, il est aussi possible de sortir un élément inviduellement :
- Y : année
- W : semaine
- D : jour
- H : heure
- M : minute
- S : seconde
Exemple d’utilisation
On veut « un format à l’anglaise » qui affiche la durée de la façon suivante : 4’46’’
Références techniques
Exemple d’utilisation avec le plugin Agenda
Je programme un site de cinéma qui utilise le plugin Agenda pour saisir les séances. Pour chaque séance, le rédacteur saisit une date de début et fin
Voici ma boucle pour afficher toutes les séance d’un film avec l’heure de début de film et la durée
Explications
On utilise une boucle EVENEMENTS pour récupérer les séances liées à l’article grâce au critère {id_article} par ordre chronologique grâce au critère {par date_debut}
L’affichage des résultats se fait dans un tableau
Pour afficher la durée on utilise la filtre duree avec l’option d’affichage minute
Utiliser le filtre durée pour calculer l’âge d’un élément
Pour calculer l’âge d’un élément, il faut utiliser comme date de fin, la date actuelle.
Développement
Le code du filtre est disponible sur la zone à l’adresse http://zone.spip.org/trac/spip-zone...
Voir aussi
Le filtre date_relative peut aussi très pratique.




filtre durée
Vos commentaires
# Le 18 mars à 05:43, par Sylvano
En réponse à : Filtre durée
Bonjour,
Petit problème avec le passage « Heure d’hiver/Heure d’été » (et oui nous sommes en mars !) (le problème inverse se produira en octobre). Constaté aujourd’hui sous wamp, je demande le nombre de jours : un calcul de durée sur un intervalle de 10 jours pleins incluant le 25 mars retourne 239 heures, donc 9 jours... logique.
Résolu en définissant
date_default_timezone_set("UTC");au tout début de la fonction.Sylvano
PS : La doc de PHP dit que lors d’un appel à
date_default_timezone_get();, «date_default_timezone» prime sur l’option «date.timezone» du php.ini.Du coup, à tout hasard, je redéfinis
date_default_timezone_set("Europe/Berlin");à la fin du script. (est-ce vraiment nécessaire ? plus sûr ?)Répondre à ce message
# Le 3 février 2011 à 15:01, par tarti
En réponse à : Filtre durée
Bonjour a tous,
Si besoin voici ma fonction un peur modifier, elle permet notamment de calculer la différence entre deux date dans un format précis. Comme le nombre de jour entre deux dates.
Exemple : avec $date_debut=16/11/2008, $date_fin=03/02/2011 $type_affichage=D vous obtiendrez 808, ou encore 2 avec $type_affichage=Y
Attention, par rapport à la première version, Y devient Years, W devient Weeks, D devient Days, H devient Hours, M devient Minutes et S devient Secondes.
Toutes les anciennes lettres servent à la nouvelle fonctionnalité.
Voici la fonction :
Répondre à ce message
# Le 7 avril 2010 à 11:05, par Jeannot
En réponse à : Filtre durée
Bonjour,
Le filtre minute me donne un résultat bizarre :
[(#DEBUT|duree{#DATE,etendu})]Resultat : 13 semaines 5 jours 9 heures 49 minutes 58 secondes (ok)
[(#DEBUT|duree{#DATE,horaire})]Résultat : 2313h49 (ok)
[(#DEBUT|duree{#DATE,minute})]Résultat : 981229 (??)
Si c’est du temps cumulé, il devrait être de 2313*60+49 soit : 138 829 ?
Ou bien je ne n’ai pas bien compris.
Merci pour votre explication
Répondre à ce message
# Le 17 juin 2009 à 19:28, par r-d
En réponse à : En nombre de jours
Il faut ajouter :
case « jour » : $str = ($diff_days+($diff_weeks*7)+($diff_years*24*7*365)) ;
break ;
afin d’avoir le nombre de jours.
Répondre à ce message
# Le 10 janvier 2008 à 10:16, par Ced
En réponse à : Filtre durée
Pourrait on imaginer un filtre similaire pour calculer la durée entre la date de publication et la date de rédaction antérieure ? (dont l’unité de mesure serait le jour)
Merci pour tout,
cedric
# Le 10 janvier 2008 à 12:52, par erational
En réponse à : Filtre durée peut s’utiliser sur toutes les dates gérées par SPIP
Le filtre durée est un filtre générique.
Il peut s’appliquer à toutes les dates gérées par SPIP à savoir :
Et à toutes balises ou plugins générant des dates au format yyyy-mm-dd hh:mm:ss comme par exemple le plugin agenda et ses balises #DATE_DEBUT et #DATE_FIN
Pour un article, vous pouvez donc écrire :
Si vous voulez uniquement afficher la durée en jours :
ps. Si la date de fin est avant la date de début, le filtre durée ne retourne rien.
# Le 13 février 2008 à 16:34, par kik
En réponse à : Filtre durée peut s’utiliser sur toutes les dates gérées par SPIP
Trés bonne idee le fitre duree. Cela m’a donné l’idee de l’adapter a mon club sportif.
Je gere des joueurs et leurs dates de naissance sont entrées dans le champ « date de redaction anterieure ».
Serait il possible d’adapter le fitre avec la date du jour courant #ENV afin de calculer l’age des joueurs et gerer facilement les licenses par exemple.
# Le 14 février 2008 à 08:09, par erational
En réponse à : Filtre durée pour calculer l’âge d’un élèment (article, rubrique, ...)
bonne idée : le filtre durée permet de calculer l’âge.
Il suffit d’utiliser en date de fin, la date actuelle
Age d’un élèment
[(#DATE|duree{#ENV{date}})]Pour les licences,
cela ne conviendra peut-être pas car on calcule la durée en années entières écoulées (comme un anniversaire) et non en années civiles (nombre de 1er janvier écoulé). Cela entraine un décalage de plus ou moins un an.
# Le 14 février 2008 à 08:45, par kik
En réponse à : Filtre durée pour calculer l’âge d’un élèment (article, rubrique, ...)
Merci pour ta reponse Rapide et c’est exact, car lorsque je fait :
[(#DATE_REDAC|duree#ENVdate,etendu)] cela affiche :
38 ans 7 semaines 4 jours 7 heures 38 minutes 56 secondes
alors que la date redac est 17/03/1968 . cela devrait donné presque 40 ans. Bon d’accord c’est flateur ;-) mais c’est pas ce qui est voulu.
de plus j’ai ce message là :
Warning : mktime() : Windows does not support negative values for this function in c :\program files\easyphp1-8\www\spip\squelettes\mes_fonctions.php on line 39
# Le 14 février 2008 à 09:03, par kik
En réponse à : Filtre durée pour calculer l’âge d’un élèment (article, rubrique, ...)
Je me repond à moi même car il y a eu erreur dans la syntaxe
en fait les acolades ne se sont pas affichées dans le message autour de #ENV et date
# Le 15 février 2008 à 09:03, par kik
En réponse à : Filtre durée pour calculer l’âge d’un élèment (article, rubrique, ...)
En cherchant un peu je me suis rendu compte que toute les dates de redac avant 1970 font ce message d’erreur cité precedement.
# Le 15 février 2008 à 11:42, par erational
En réponse à : Age avec date < 1970
Il s’agit d’un erreur spécifique à windows et easyphp 1.8
Si tu passes à easyphp 2.0 sur windows ou sur une plateforme Unix, mktime supporte les dates antérieures à 1970. Le filtre durée fonctionne bien et il capable de calculer des âges supérieurs à 38 ans (l’âge de l’âge Unix)
# Le 15 février 2008 à 15:06, par kik
En réponse à : Age avec date < 1970
Merci de ce renseignement je vien de reinstaller la version 2 et cela fonctionne mieux
Je n’ai plus le message d’erreur.
Répondre à ce message
# Le 12 janvier 2008 à 22:22, par ?
En réponse à : Filtre durée
J’ai testé aujourd’hui le filtre avec :
[(#DATE|duree#DATE_DEBUT,D)]
#DATE = 12/01/2008
#DATE_DEBUT = 26/01/2008
Il me retourne 6 au lieu de 14. C’est plutôt bizarre.
# Le 30 janvier 2008 à 16:46, par Perline
En réponse à : Filtre durée
Tu n’as pas la bonne synthaxe ? :
[(#DATE_DEBUT|duree{#DATE_FIN})]Répondre à ce message
# Le 14 janvier 2008 à 12:58, par Patrice Vanneufville
En réponse à : Filtre durée
Ce filtre n’est pas internationalisé, c’est dommage.
Répondre à ce message
# Le 12 janvier 2008 à 09:17, par James
En réponse à : Filtre durée
Chouette filtre ! Merci :)
Répondre à ce message