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

Le
Denis Bitouzé
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
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
CrazyCat
Le #19676891
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
Le #19676901
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,

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
Julien Marchand
Le #19676911
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);
?>
Anthony
Le #19676921
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...



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
Le #19676931
On 1 juil, 13:04, Denis Bitouzé
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
Mickael Wolff
Le #19679451
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
Denis Bitouzé
Le #19679461
Le mercredi 01/07/09 à 11h04,
Denis Bitouzé
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Úte("H", strtotime($debut));
$minutes_debutÚte("i", strtotime($debut));
$heures_dureeÚte("H", strtotime($duree));
$minutes_dureeÚte("i", strtotime($duree));
$heures_fin=$heures_debut+$heures_duree;
$minutes_fin=$minutes_debut+$minutes_duree;
$finÚte("H:i", mktime($heures_fin, $minutes_fin));

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

Encore merci !
--
Denis
Denis Bitouzé
Le #19682281
Le mercredi 01/07/09 à 22h53,
Mickael Wolff
$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Úte("H", strtotime($debut));
$minutes_debutÚte("i", strtotime($debut));
$heures_dureeÚte("H", strtotime($duree));
$minutes_dureeÚte("i", strtotime($duree));
$heures_fin=$heures_debut+$heures_duree;
$minutes_fin=$minutes_debut+$minutes_duree;
$finÚte("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
Publicité
Poster une réponse
Anonyme