Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Ajouter des « time =?ISO-8859-15?B?uw==?

0 views
Skip to first unread message

Denis Bitouzé

unread,
Jul 1, 2009, 7:04:28 AM7/1/09
to
Bonjour,

dans un formulaire, je rᅵcupᅵre un horaire (de dᅵbut d'ᅵvᅵnement) et une
durᅵe au format :

HH:MM

et j'ai eu beau farfouiller dans des tas de sites et forums, procᅵder
ᅵ des tas de tests, je n'ai pas trouvᅵ moyen d'ajouter l'un ᅵ l'autre
pour obtenir l'horaire de fin d'ᅵvᅵnement.

Merci d'avance pour tout conseil...
--
Denis

CrazyCat

unread,
Jul 1, 2009, 10:54:53 AM7/1/09
to
Denis Bitouzᅵ wrote:
> dans un formulaire, je rᅵcupᅵre un horaire (de dᅵbut d'ᅵvᅵnement) et une
> durᅵe au format :
> HH:MM

Peut-ᅵtre qu'avec strtotime ᅵa peut fonctionner.
J'imagine que l'horaire de dᅵbut est la date/heure de dᅵbut. On peut
donc faire:
<?php
$start = strtotime($horaire);
$dur = explode(':', $duree);
$end = strtotime("+ ".intval($dur[0])." hours ".intval($dur[1])."
minutes", $start);

echo date('d/m/Y H:i', $end);
?>


--
Rᅵseau IRC Francophone: http://www.zeolia.net
Aide et astuces : http://www.g33k-zone.org
Communautᅵ Francophone sur les Eggdrops: http://www.eggdrop.fr

Xavier Nayrac

unread,
Jul 1, 2009, 10:54:53 AM7/1/09
to
Denis Bitouzᅵ a ᅵcrit :

Bonjour,

Un dᅵbut de solution :
Convertir tes horaires en minutes HH * 60 + MM
Ajouter les deux horaires puis faire la conversion inverse.
Une division par 60 donnera les heures et un modulo par 60
donnera les minutes.
Aprᅵs, faire attention ᅵ ne pas dᅵpasser 23:59 !
Difficile de dire mieux sans plus d'informations.

--
Xavier Nayrac
http://personalbugtracker.free.fr

Anthony

unread,
Jul 1, 2009, 10:54:53 AM7/1/09
to
Denis Bitouzᅵ a ᅵcrit :

pas trop le temps mais essayer ᅵa pour voir ...

function AddTime($time1,$time2) {
list( $hr1, $min1, $sec1 ) = split( ":", $time1);
$UTime1 = mktime(1,$min1,$sec1,01,01,1970);
list( $hr2, $min2, $sec2 ) = split( ":", $time2);
$UTime2 = mktime(1,$min2,$sec2,01,01,1970);
$UTimeTotal = $UTime1 + $UTime2;
$UTimeTotal = $UTimeTotal - 3600;
$timeTotal = date ("H:i:s",$UTimeTotal);
list( $hr3, $min3, $sec3 ) = split( ":", $timeTotal);
$hrTotal = $hr1 + $hr2;
if ($hr3 >= 1)
$hrTotal = $hrTotal + $hr3;
if( $hrTotal<10) { $hrTotal="0".$hrTotal; }
$timeTotal = $hrTotal.":".$min3.":".$sec3;
return $timeTotal;
}

anthony

samuel

unread,
Jul 1, 2009, 10:54:53 AM7/1/09
to
On 1 juil, 13:04, Denis Bitouz� <dbitouze...@spam.wanadoo.fr> wrote:
> Bonjour,
>
> dans un formulaire, je r�cup�re un horaire (de d�but d'�v�nement) et une
> dur�e au format :
>
> HH:MM
>
> et j'ai eu beau farfouiller dans des tas de sites et forums, proc�der
> � des tas de tests, je n'ai pas trouv� moyen d'ajouter l'un � l'autre
> pour obtenir l'horaire de fin d'�v�nement.

>
> Merci d'avance pour tout conseil...
> --
> Denis

tu le r�cup�re aussi en HH:MM ton d�but d'�v�nement?
si oui, ben tu extrais les HH et les MM, tu ajoute les HH entre eux,
les MM entre eux, tu divises par 60 en gardant le reste... pis voil�
quoi
non?

apr�s je dis pas, y'a p-e plus simple..
bonne chance

Julien Marchand

unread,
Jul 1, 2009, 10:54:53 AM7/1/09
to
Denis Bitouz� a �crit :
> Bonjour,
>
> dans un formulaire, je r�cup�re un horaire (de d�but d'�v�nement) et une
> dur�e au format :
>
> HH:MM
>
> et j'ai eu beau farfouiller dans des tas de sites et forums, proc�der
> � des tas de tests, je n'ai pas trouv� moyen d'ajouter l'un � l'autre
> pour obtenir l'horaire de fin d'�v�nement.

>
> Merci d'avance pour tout conseil...

Bonjour,

En effet en cherchant bri�vement je n'ai pas trouv� de fonction native
permettant de faire �a.

Mais c'est pas tr�s grave :

<?php
function horaire_fin($horaire_debut, $duree)
{
// $horaire_debut et $duree au format 'HH:MM'
list($heures_debut, $minutes_debut) = sscanf($horaire_debut, "%d:%d");
list($heures_duree, $minutes_duree) = sscanf($duree, "%d:%d");

$heures_fin = $heures_debut + $heures_duree + floor(($minutes_debut +
$minutes_duree)/60);
$minutes_fin = ($minutes_debut + $minutes_duree)%60;

if($heures_fin < 10) $heures_fin = "0$heures_fin";
if($minutes_fin < 10) $minutes_fin = "0$minutes_fin";

return "$heures_fin:$minutes_fin";
}

$horaire_debut = '13:45';
$duree = '02:16';

echo horaire_fin($horaire_debut, $duree);
?>

�a devrait le faire :)

Sinon tu peux aussi utiliser les timestamp, peut �tre plus concis et
plus propre :

<?php
function horaire_fin2($horaire_debut, $duree)
{
// $horaire_debut et $duree au format 'HH:MM'
list($heures_debut, $minutes_debut) = sscanf($horaire_debut, "%d:%d");
list($heures_duree, $minutes_duree) = sscanf($duree, "%d:%d");

$time_debut = mktime($heures_debut, $minutes_debut);
$time_fin = $time_debut + 60*60*$heures_duree + 60*$minutes_duree;

return date('H:i', $time_fin);
}

$horaire_debut = '13:45';
$duree = '02:16';

echo horaire_fin2($horaire_debut, $duree);
?>

Denis Bitouzé

unread,
Jul 1, 2009, 6:53:48 PM7/1/09
to
Le mercredi 01/07/09 ᅵ 11h04,
Denis Bitouzᅵ <dbito...@spam.wanadoo.fr> a ᅵcrit :


> Merci d'avance pour tout conseil...

Merci pour tous vos conseils. Entre temps, j'ai fini par trouver cette
autre solution :

$debut=$_POST["debut"]; // Au format HH:MM
$duree=$_POST["duree"]; // Au format HH:MM
$heures_debut=date("H", strtotime($debut));
$minutes_debut=date("i", strtotime($debut));
$heures_duree=date("H", strtotime($duree));
$minutes_duree=date("i", strtotime($duree));
$heures_fin=$heures_debut+$heures_duree;
$minutes_fin=$minutes_debut+$minutes_duree;
$fin=date("H:i", mktime($heures_fin, $minutes_fin));

dont je ne mesure pas la (le manque de) pertinence...

Encore merci !
--
Denis

Mickael Wolff

unread,
Jul 1, 2009, 6:53:48 PM7/1/09
to
Denis Bitouzᅵ a ᅵcrit :
> dans un formulaire, je rᅵcupᅵre un horaire (de dᅵbut d'ᅵvᅵnement) et une
> durᅵe au format :
>
> HH:MM

$duration = '12:30' ;
$start = '2009-06-01 12:00' ;

list($hours, $minutes) = explode(':', $duration) ;
$end = strftime('%c', strtotime(sprintf('+%d hours %d minutes', $hours,
$minutes) , strtotime($start))) ;

> et j'ai eu beau farfouiller dans des tas de sites et forums, procᅵder
> ᅵ des tas de tests, je n'ai pas trouvᅵ moyen d'ajouter l'un ᅵ l'autre
> pour obtenir l'horaire de fin d'ᅵvᅵnement.

Si tu utilises une base de donnᅵes, ᅵa pourrait ᅵtre une bonne idᅵe
de l'exploitᅵe afin d'avoir un calcul garanti.

> Merci d'avance pour tout conseil...

Une journᅵe ne dure pas toujours 24 * 60 * 60 secondes. strtotime est
un outil qui permet de prendre en compte les changements d'heure (hiver,
ᅵtᅵ).

--
Mickaᅵl Wolff aka Lupus Michaelis
http://lupusmic.org

Seeking for a position <http://lupusmic.org/pro/>

Denis Bitouzé

unread,
Jul 2, 2009, 7:35:25 AM7/2/09
to
Le mercredi 01/07/09 ᅵ 22h53,
Mickael Wolff <mickae...@laposte.net> a ᅵcrit :

> $duration = '12:30' ;
> $start = '2009-06-01 12:00' ;
>
> list($hours, $minutes) = explode(':', $duration) ;
> $end = strftime('%c', strtotime(sprintf('+%d hours %d minutes',
> $hours, $minutes) , strtotime($start))) ;

OK, merci. Y a-t-il une raison de prᅵfᅵrer ce type de mᅵthode ᅵ ce que
je proposais finalement :

$debut=$_POST["debut"]; // Au format HH:MM
$duree=$_POST["duree"]; // Au format HH:MM
$heures_debut=date("H", strtotime($debut));
$minutes_debut=date("i", strtotime($debut));
$heures_duree=date("H", strtotime($duree));
$minutes_duree=date("i", strtotime($duree));
$heures_fin=$heures_debut+$heures_duree;
$minutes_fin=$minutes_debut+$minutes_duree;
$fin=date("H:i", mktime($heures_fin, $minutes_fin));

> > et j'ai eu beau farfouiller dans des tas de sites et forums,


> > procᅵder ᅵ des tas de tests, je n'ai pas trouvᅵ moyen d'ajouter
> > l'un ᅵ l'autre pour obtenir l'horaire de fin d'ᅵvᅵnement.
>
> Si tu utilises une base de donnᅵes, ᅵa pourrait ᅵtre une bonne
> idᅵe de l'exploitᅵe afin d'avoir un calcul garanti.

Ah, OK. J'ai besoin d'afficher l'heure de fin dans un formulaire
intermᅵdiaire, donc de faire le calcul en PHP mais, pour l'insertion
finale dans ma base de donnᅵes, j'y songerai.

> > Merci d'avance pour tout conseil...
>
> Une journᅵe ne dure pas toujours 24 * 60 * 60 secondes. strtotime
> est un outil qui permet de prendre en compte les changements d'heure
> (hiver, ᅵtᅵ).

Bon ᅵ savoir :)

Merci !
--
Denis

0 new messages