Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

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

8 réponses
Avatar
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

8 réponses

Avatar
samuel
On 1 juil, 13:04, Denis Bitouzé 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
Avatar
CrazyCat
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
Avatar
Xavier Nayrac
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
Avatar
Julien Marchand
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);
?>
Avatar
Anthony
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
Avatar
Mickael Wolff
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/>
Avatar
Denis Bitouzé
Le mercredi 01/07/09 à 11h04,
Denis Bitouzé 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Ú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
Avatar
Denis Bitouzé
Le mercredi 01/07/09 à 22h53,
Mickael Wolff 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Ú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