additionner des durées en heure, minute et seconde

Bonjour,

Comment additionner des durées?

Je m’explique:

Dans ma base chaque enregistrement à une durée pour lequel j’ai créé un champs: duree

de type hh:mm:ss

J’ai utilisé le code suivant:

#SET{total,0}
<BOUCLE_a(ARTICLES)>
[(#SET{total, #GET{total}|plus{#DUREE}})]
</BOUCLE_a>
total : #GET{total}

Cela fonctionne mais uniquement pour les heures. Par ex:

1h25 + 1h45 + 2h12

donne le résultat 4h
et non 5h22

Faut-il transformer avant calcul les durées en minutes (par ex 1h25 devient 85 mn) ?

Merci de vos avis et conseils,

Beru

Il me semble que le filtre |plus n'accepte que des types numérique. Donc oui passer les données en minutes peut être une solution.

Le 02/01/2013 10:39, Beru Beru a écrit :

Bonjour,

Comment additionner des durées?

Je m'explique:

Dans ma base chaque enregistrement à une durée pour lequel j'ai créé un
champs: duree
de type hh:mm:ss

J'ai utilisé le code suivant:

#SET{total,0}
<BOUCLE_a(ARTICLES)>
[(#SET{total, #GET{total}|plus{#DUREE}})]
</BOUCLE_a>
     total : #GET{total}

Cela fonctionne mais uniquement pour les heures. Par ex:
1h25 + 1h45 + 2h12
donne le résultat 4h
et non 5h22

Faut-il transformer avant calcul les durées en minutes (par ex 1h25
devient 85 mn) ?

Merci de vos avis et conseils,

Beru

Bonjour,

Transformer en TimeStamp (nb de secondes depuis 1/1/1970) en regardant les fonctions de Php qui peuvent toutes être utilisées comme filtre Spip.

Le 02/01/2013 10:39, Beru Beru a écrit :

Comment additionner des durées?

Je m'explique:

Dans ma base chaque enregistrement à une durée pour lequel j'ai créé un
champs: duree
de type hh:mm:ss

J'ai utilisé le code suivant:

#SET{total,0}
<BOUCLE_a(ARTICLES)>
[(#SET{total, #GET{total}|plus{#DUREE}})]
</BOUCLE_a>
     total : #GET{total}

Cela fonctionne mais uniquement pour les heures. Par ex:
1h25 + 1h45 + 2h12
donne le résultat 4h
et non 5h22

Faut-il transformer avant calcul les durées en minutes (par ex 1h25
devient 85 mn) ?

Merci de vos avis et conseils,

Beru

--
Stéphane

BTS Electrotechnique *** http://enselec.santonum.eu
Les Voisins Spipeurs * http://www.voisins-spipeurs.net

Tu aurais un petit exemple de snythaxe pour transformer, par ex la durée 01:12:25 en 72 minutes ou 4345 secondes, et compatible avec Spip ?

Beru

http://contrib.spip.net/Utilisation-des-filtres-de-date

http://forum.spip.net/fr_231956.html

http://www.spip.net/en_article5533.html

De : Beru Beru [mailto:beru59@gmail.com]
Envoyé : vendredi 4 janvier 2013 19:08
À : Stéphane Santon
Cc : liste SPIP
Objet : Re: [Spip] additionner des durées en heure, minute et seconde

Tu aurais un petit exemple de snythaxe pour transformer, par ex la durée 01:12:25 en 72 minutes ou 4345 secondes, et compatible avec Spip ?

Beru

Le 4 janvier 2013 00:54, Stéphane Santon <m.spiprezo@team-santonum.com> a écrit :

Bonjour,

Transformer en TimeStamp (nb de secondes depuis 1/1/1970) en regardant les fonctions de Php qui peuvent toutes être utilisées comme filtre Spip.
http://php.net/manual/fr/function.strtotime.php
http://php.net/manual/fr/ref.datetime.php

Le 02/01/2013 10:39, Beru Beru a écrit :

Comment additionner des durées?

Je m’explique:

Dans ma base chaque enregistrement à une durée pour lequel j’ai créé un
champs: duree
de type hh:mm:ss

J’ai utilisé le code suivant:

#SET{total,0}
<BOUCLE_a(ARTICLES)>
[(#SET{total, #GET{total}|plus{#DUREE}})]
</BOUCLE_a>
total : #GET{total}

Cela fonctionne mais uniquement pour les heures. Par ex:
1h25 + 1h45 + 2h12
donne le résultat 4h
et non 5h22

Faut-il transformer avant calcul les durées en minutes (par ex 1h25
devient 85 mn) ?

Merci de vos avis et conseils,

Beru


Stéphane

BTS Electrotechnique *** http://enselec.santonum.eu
Les Voisins Spipeurs * http://www.voisins-spipeurs.net


liste spip
spip@rezo.net - désabonnement : envoyer un mail à spip-off@rezo.net

Infos et archives : http://listes.rezo.net/mailman/listinfo/spip
http://archives.rezo.net/spip.mbox/

Documentation de SPIP : http://www.spip.net/

Irc : de l’aide à toute heure : http://spip.net/irc

Merci pour ces liens.

Hélas je n’ai pas su trouver mon bonheur.

Je précise que je cherche à additionner des durées (indépendamment de tout problème de date).

Par ex, cela pourrait être: 30h + 2h25 + 4h58

Beru

Bon après tout ce que j’ai lu, le besoin est simplement d’aditionner des temps qui ont un format du type xxh yym zzs!

Y-a-pas de secret, on additionne d’abord les seconde et tout ce qui est au dessus de 60, il faut le convertit en heures et minutes.
Puis on additionne les minutes et tout ce qui est au dessus de 60 on le convertit en heures
On additionne enfin les heures et quand c’est au dessus de 24 on le convertit en jours. Il faut faire un peut de programmation !
Sinon tu convertit tous tes temps en secondes; t’aditionne le tout et tu reconvertit en heures, minutes et secondes!

bon courage!

Message du 05/01/13 15:41
De : « Beru Beru »
A : « francois L deplaine »
Copie à : « liste SPIP »
Objet : Re: [Spip] additionner des durées en heure, minute et seconde

Merci pour ces liens.

Hélas je n’ai pas su trouver mon bonheur.

Je précise que je cherche à additionner des durées (indépendamment de tout problème de date).

Par ex, cela pourrait être: 30h + 2h25 + 4h58

Beru

http://contrib.spip.net/Utilisation-des-filtres-de-date

http://forum.spip.net/fr_231956.html

http://www.spip.net/en_article5533.html

De : Beru Beru [mailto:beru59@gmail.com]

Envoyé : vendredi 4 janvier 2013 19:08
À : Stéphane Santon
Cc : liste SPIP
Objet : Re: [Spip] additionner des durées en heure, minute et seconde

Tu aurais un petit exemple de snythaxe pour transformer, par ex la durée 01:12:25 en 72 minutes ou 4345 secondes, et compatible avec Spip ?

Beru

Bonjour,

Transformer en TimeStamp (nb de secondes depuis 1/1/1970) en regardant les fonctions de Php qui peuvent toutes être utilisées comme filtre Spip.
http://php.net/manual/fr/function.strtotime.php
http://php.net/manual/fr/ref.datetime.php

Comment additionner des durées?

Je m’explique:

Dans ma base chaque enregistrement à une durée pour lequel j’ai créé un
champs: duree
de type hh:mm:ss

J’ai utilisé le code suivant:

#SET{total,0}

[(#SET{total, #GET{total}|plus{#DUREE}})]

total : #GET{total}

Cela fonctionne mais uniquement pour les heures. Par ex:
1h25 + 1h45 + 2h12
donne le résultat 4h
et non 5h22

Faut-il transformer avant calcul les durées en minutes (par ex 1h25
devient 85 mn) ?

Merci de vos avis et conseils,

Beru


Stéphane

BTS Electrotechnique *** http://enselec.santonum.eu
Les Voisins Spipeurs * http://www.voisins-spipeurs.net


liste spip
spip@rezo.net - désabonnement : envoyer un mail à spip-off@rezo.net

Infos et archives : http://listes.rezo.net/mailman/listinfo/spip
http://archives.rezo.net/spip.mbox/

Documentation de SPIP : http://www.spip.net/

Irc : de l’aide à toute heure : http://spip.net/irc


liste spip
spip@rezo.net - désabonnement : envoyer un mail à spip-off@rezo.net

Infos et archives : http://listes.rezo.net/mailman/listinfo/spip
http://archives.rezo.net/spip.mbox/

Documentation de SPIP : http://www.spip.net/

Irc : de l’aide à toute heure : http://spip.net/irc

[ (pas de nom de fichier) (0.3 Ko) ]

ca semble plus simple de tout convertir en secondes :
t = h3600+m60+s

puis de convertir le temps obtenu en h m s. si t est le temps en secondes :

h = t/3600
r1 = modulo(t,3600)
m = r1/60
s = modulo(r1/60)

où « modulo » serait une fonction « reste » de la division entière (opérateur « % » en C)

Le 5 janv. 2013 à 19:38, papounet.net a écrit :

Bon après tout ce que j’ai lu, le besoin est simplement d’aditionner des temps qui ont un format du type xxh yym zzs!

Y-a-pas de secret, on additionne d’abord les seconde et tout ce qui est au dessus de 60, il faut le convertit en heures et minutes.
Puis on additionne les minutes et tout ce qui est au dessus de 60 on le convertit en heures
On additionne enfin les heures et quand c’est au dessus de 24 on le convertit en jours. Il faut faire un peut de programmation !
Sinon tu convertit tous tes temps en secondes; t’aditionne le tout et tu reconvertit en heures, minutes et secondes!

bon courage!

Message du 05/01/13 15:41
De : « Beru Beru »
A : « francois L deplaine »
Copie à : « liste SPIP »
Objet : Re: [Spip] additionner des durées en heure, minute et seconde

Merci pour ces liens.

Hélas je n’ai pas su trouver mon bonheur.

Je précise que je cherche à additionner des durées (indépendamment de tout problème de date).

Par ex, cela pourrait être: 30h + 2h25 + 4h58

Beru

Le 4 janvier 2013 20:02, francois L deplaine <francois.delaveine47@free.fr> a écrit :

http://contrib.spip.net/Utilisation-des-filtres-de-date

http://forum.spip.net/fr_231956.html

http://www.spip.net/en_article5533.html

De : Beru Beru [mailto:beru59@gmail.com]

Envoyé : vendredi 4 janvier 2013 19:08
À : Stéphane Santon
Cc : liste SPIP
Objet : Re: [Spip] additionner des durées en heure, minute et seconde

Tu aurais un petit exemple de snythaxe pour transformer, par ex la durée 01:12:25 en 72 minutes ou 4345 secondes, et compatible avec Spip ?

Beru

Le 4 janvier 2013 00:54, Stéphane Santon <m.spiprezo@team-santonum.com> a écrit :

Bonjour,

Transformer en TimeStamp (nb de secondes depuis 1/1/1970) en regardant les fonctions de Php qui peuvent toutes être utilisées comme filtre Spip.
http://php.net/manual/fr/function.strtotime.php
http://php.net/manual/fr/ref.datetime.php

Le 02/01/2013 10:39, Beru Beru a écrit :

Comment additionner des durées?

Je m’explique:

Dans ma base chaque enregistrement à une durée pour lequel j’ai créé un
champs: duree
de type hh:mm:ss

J’ai utilisé le code suivant:

#SET{total,0}

[(#SET{total, #GET{total}|plus{#DUREE}})]

total : #GET{total}

Cela fonctionne mais uniquement pour les heures. Par ex:
1h25 + 1h45 + 2h12
donne le résultat 4h
et non 5h22

Faut-il transformer avant calcul les durées en minutes (par ex 1h25
devient 85 mn) ?

Merci de vos avis et conseils,

Beru


Stéphane

BTS Electrotechnique *** http://enselec.santonum.eu
Les Voisins Spipeurs * http://www.voisins-spipeurs.net


liste spip
spip@rezo.net - désabonnement : envoyer un mail à spip-off@rezo.net

Infos et archives : http://listes.rezo.net/mailman/listinfo/spip
http://archives.rezo.net/spip.mbox/

Documentation de SPIP : http://www.spip.net/

Irc : de l’aide à toute heure : http://spip.net/irc


liste spip
spip@rezo.net - désabonnement : envoyer un mail à spip-off@rezo.net

Infos et archives : http://listes.rezo.net/mailman/listinfo/spip
http://archives.rezo.net/spip.mbox/

Documentation de SPIP : http://www.spip.net/

Irc : de l’aide à toute heure : http://spip.net/irc

[ (pas de nom de fichier) (0.3 Ko) ]

_______________________________________________
liste spip
spip@rezo.net - désabonnement : envoyer un mail à spip-off@rezo.net

Infos et archives : http://listes.rezo.net/mailman/listinfo/spip
Discuter chez rezo.net

Documentation de SPIP : http://www.spip.net/

Irc : de l’aide à toute heure : http://spip.net/irc

Merci de ta réponse.

Et comment je fais rentrer ça dans une boucle SPIP?

Beru

Comme ki dirait yaka faucon!
C’est du code à écrire avec le langage de PHP, regarde là : http://php.net/manual/fr/langref.php
et à appeler dans les bonnes boucles!

Message du 10/01/13 18:31
De : « Beru Beru »
A : « Mikhael MYARA »
Copie à : « papounet.net » , « francois L deplaine » , « liste SPIP »
Objet : Re: [Spip] additionner des durées en heure, minute et seconde

Merci de ta réponse.

Et comment je fais rentrer ça dans une boucle SPIP?

Beru

ca semble plus simple de tout convertir en secondes :

t = h3600+m60+s

puis de convertir le temps obtenu en h m s. si t est le temps en secondes :

h = t/3600

r1 = modulo(t,3600)

m = r1/60

s = modulo(r1/60)

où « modulo » serait une fonction « reste » de la division entière (opérateur « % » en C)

Bon après tout ce que j’ai lu, le besoin est simplement d’aditionner des temps qui ont un format du type xxh yym zzs!

Y-a-pas de secret, on additionne d’abord les seconde et tout ce qui est au dessus de 60, il faut le convertit en heures et minutes.
Puis on additionne les minutes et tout ce qui est au dessus de 60 on le convertit en heures
On additionne enfin les heures et quand c’est au dessus de 24 on le convertit en jours. Il faut faire un peut de programmation !
Sinon tu convertit tous tes temps en secondes; t’aditionne le tout et tu reconvertit en heures, minutes et secondes!

bon courage!

Message du 05/01/13 15:41

De : « Beru Beru »
A : « francois L deplaine »
Copie à : « liste SPIP »
Objet : Re: [Spip] additionner des durées en heure, minute et seconde

Merci pour ces liens.

Hélas je n’ai pas su trouver mon bonheur.

Je précise que je cherche à additionner des durées (indépendamment de tout problème de date).

Par ex, cela pourrait être: 30h + 2h25 + 4h58

Beru

http://contrib.spip.net/Utilisation-des-filtres-de-date

http://forum.spip.net/fr_231956.html

http://www.spip.net/en_article5533.html

De : Beru Beru [mailto:beru59@gmail.com]

Envoyé : vendredi 4 janvier 2013 19:08
À : Stéphane Santon
Cc : liste SPIP
Objet : Re: [Spip] additionner des durées en heure, minute et seconde

Tu aurais un petit exemple de snythaxe pour transformer, par ex la durée 01:12:25 en 72 minutes ou 4345 secondes, et compatible avec Spip ?

Beru

Bonjour,

Transformer en TimeStamp (nb de secondes depuis 1/1/1970) en regardant les fonctions de Php qui peuvent toutes être utilisées comme filtre Spip.
http://php.net/manual/fr/function.strtotime.php
http://php.net/manual/fr/ref.datetime.php

Comment additionner des durées?

Je m’explique:

Dans ma base chaque enregistrement à une durée pour lequel j’ai créé un
champs: duree
de type hh:mm:ss

J’ai utilisé le code suivant:

#SET{total,0}

[(#SET{total, #GET{total}|plus{#DUREE}})]

total : #GET{total}

Cela fonctionne mais uniquement pour les heures. Par ex:
1h25 + 1h45 + 2h12
donne le résultat 4h
et non 5h22

Faut-il transformer avant calcul les durées en minutes (par ex 1h25
devient 85 mn) ?

Merci de vos avis et conseils,

Beru


Stéphane

BTS Electrotechnique *** http://enselec.santonum.eu
Les Voisins Spipeurs * http://www.voisins-spipeurs.net


liste spip
spip@rezo.net - désabonnement : envoyer un mail à spip-off@rezo.net

Infos et archives : http://listes.rezo.net/mailman/listinfo/spip
http://archives.rezo.net/spip.mbox/

Documentation de SPIP : http://www.spip.net/

Irc : de l’aide à toute heure : http://spip.net/irc


liste spip
spip@rezo.net - désabonnement : envoyer un mail à spip-off@rezo.net

Infos et archives : http://listes.rezo.net/mailman/listinfo/spip
http://archives.rezo.net/spip.mbox/

Documentation de SPIP : http://www.spip.net/

Irc : de l’aide à toute heure : http://spip.net/irc

[ (pas de nom de fichier) (0.3 Ko) ]

_______________________________________________

liste spip
spip@rezo.net - désabonnement : envoyer un mail à spip-off@rezo.net

Infos et archives : http://listes.rezo.net/mailman/listinfo/spip
Discuter chez rezo.net

Documentation de SPIP : http://www.spip.net/

Irc : de l’aide à toute heure : http://spip.net/irc

Je suis toujours sur mon prob!
:wink:

J’ai trouvé cela qui fonctionne:

Voilà une boucle où la somme des heures s’affiche en dessous d’un article (boucle initialement écrite par JC Villeneuce pour ESCAL (V2)et modifiée pour mes besoins).

[(#REM) feuille de style pour l'onglet Bienvenue ]

<BOUCLE_accueil(ARTICLES){titre_mot=ProgramMois}{lang}>

#TEXTE
#SET{somme,#EVAL{add_heures('12:04:43','1:54:8')}} #GET{somme}

Le code de calcul des deux fonctions, que tu as donné pour la sommation des heures, est collé dans mes_fonctions.php placé dans le répertoire « squelettes »

J’ai testé avec un spip 2.1.19 en local avec easyphp.

Message du 28/01/13 10:41
De : « Beru Beru »
A : « papounet.net »
Copie à : « Mikhael MYARA » , « francois L deplaine » , « liste SPIP »
Objet : Re: [Spip] additionner des durées en heure, minute et seconde

Je suis toujours sur mon prob!

:wink:

J’ai trouvé cela qui fonctionne:


function add_heures($heure1,$heure2){
$secondes1=heure_to_secondes($heure1);
$secondes2=heure_to_secondes($heure2);
$somme=$secondes1+$secondes2;
//transfo en h:i:s
$s=$somme % 60; //reste de la division en minutes => secondes
$m1=($somme-$s) / 60; //minutes totales
$m=$m1 % 60;//reste de la division en heures => minutes
$h=($m1-$m) / 60; //heures
$resultat=$h."H ".$m.« mn « .$s.« s »;
return $resultat;
}
function heure_to_secondes($heure){
$array_heure=explode( »: »,$heure);
$secondes=3600*$array_heure[0]+60*$array_heure[1]+$array_heure[2];
return $secondes;
}

$heure_1=‹ 12:04:43 ›;
$heure_2=‹ 14:57:07 ›;
echo 'La somme de ‹ .$heure_1. › et de ‹ .$heure_2. › est: '.add_heures($heure_1,$heure_2);
?>


Mais je n’arrive pas à y inclure ma boucle.

Qui ressemble à cela pour l’instant:

#SET{total,0}

#SET{total, #GET{total}|plus{#CHAMPS}}

total : #GET{total}

Beru

Comme ki dirait yaka faucon!

C’est du code à écrire avec le langage de PHP, regarde là : http://php.net/manual/fr/langref.php
et à appeler dans les bonnes boucles!

Message du 10/01/13 18:31

De : « Beru Beru »
A : « Mikhael MYARA »
Copie à : « papounet.net » , « francois L deplaine » , « liste SPIP »

Objet : Re: [Spip] additionner des durées en heure, minute et seconde

Merci de ta réponse.

Et comment je fais rentrer ça dans une boucle SPIP?

Beru

ca semble plus simple de tout convertir en secondes :

t = h3600+m60+s

puis de convertir le temps obtenu en h m s. si t est le temps en secondes :

h = t/3600

r1 = modulo(t,3600)

m = r1/60

s = modulo(r1/60)

où « modulo » serait une fonction « reste » de la division entière (opérateur « % » en C)

Bon après tout ce que j’ai lu, le besoin est simplement d’aditionner des temps qui ont un format du type xxh yym zzs!

Y-a-pas de secret, on additionne d’abord les seconde et tout ce qui est au dessus de 60, il faut le convertit en heures et minutes.
Puis on additionne les minutes et tout ce qui est au dessus de 60 on le convertit en heures
On additionne enfin les heures et quand c’est au dessus de 24 on le convertit en jours. Il faut faire un peut de programmation !
Sinon tu convertit tous tes temps en secondes; t’aditionne le tout et tu reconvertit en heures, minutes et secondes!

bon courage!

Message du 05/01/13 15:41

De : « Beru Beru »
A : « francois L deplaine »
Copie à : « liste SPIP »
Objet : Re: [Spip] additionner des durées en heure, minute et seconde

Merci pour ces liens.

Hélas je n’ai pas su trouver mon bonheur.

Je précise que je cherche à additionner des durées (indépendamment de tout problème de date).

Par ex, cela pourrait être: 30h + 2h25 + 4h58

Beru

http://contrib.spip.net/Utilisation-des-filtres-de-date

http://forum.spip.net/fr_231956.html

http://www.spip.net/en_article5533.html

De : Beru Beru [mailto:beru59@gmail.com]

Envoyé : vendredi 4 janvier 2013 19:08
À : Stéphane Santon
Cc : liste SPIP
Objet : Re: [Spip] additionner des durées en heure, minute et seconde

Tu aurais un petit exemple de snythaxe pour transformer, par ex la durée 01:12:25 en 72 minutes ou 4345 secondes, et compatible avec Spip ?

Beru

Bonjour,

Transformer en TimeStamp (nb de secondes depuis 1/1/1970) en regardant les fonctions de Php qui peuvent toutes être utilisées comme filtre Spip.
http://php.net/manual/fr/function.strtotime.php
http://php.net/manual/fr/ref.datetime.php

Comment additionner des durées?

Je m’explique:

Dans ma base chaque enregistrement à une durée pour lequel j’ai créé un
champs: duree
de type hh:mm:ss

J’ai utilisé le code suivant:

#SET{total,0}

[(#SET{total, #GET{total}|plus{#DUREE}})]

total : #GET{total}

Cela fonctionne mais uniquement pour les heures. Par ex:
1h25 + 1h45 + 2h12
donne le résultat 4h
et non 5h22

Faut-il transformer avant calcul les durées en minutes (par ex 1h25
devient 85 mn) ?

Merci de vos avis et conseils,

Beru


Stéphane

BTS Electrotechnique *** http://enselec.santonum.eu
Les Voisins Spipeurs * http://www.voisins-spipeurs.net


liste spip
spip@rezo.net - désabonnement : envoyer un mail à spip-off@rezo.net

Infos et archives : http://listes.rezo.net/mailman/listinfo/spip
http://archives.rezo.net/spip.mbox/

Documentation de SPIP : http://www.spip.net/

Irc : de l’aide à toute heure : http://spip.net/irc


liste spip
spip@rezo.net - désabonnement : envoyer un mail à spip-off@rezo.net

Infos et archives : http://listes.rezo.net/mailman/listinfo/spip
http://archives.rezo.net/spip.mbox/

Documentation de SPIP : http://www.spip.net/

Irc : de l’aide à toute heure : http://spip.net/irc

[ (pas de nom de fichier) (0.3 Ko) ]

_______________________________________________

liste spip
spip@rezo.net - désabonnement : envoyer un mail à spip-off@rezo.net

Infos et archives : http://listes.rezo.net/mailman/listinfo/spip
http://archives.rezo.net/spip.mbox/

Documentation de SPIP : http://www.spip.net/

Irc : de l’aide à toute heure : http://spip.net/irc

Merci de ta proposition.

J’ai simplifié le code et adapté à ce que je proposais. Cela donnerait cela.

Si je ne me trompe pas et si j’ai bien compris:

Il faudrait que je trouve le moyen de calculer à chaque « passage » de boucle:

La somme du #champs actif et du #champs précédent.

Beru