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
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
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
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
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
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);
?>
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
$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/>
> $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