PHP: calculer le nombre d'heure [Réglé]
Forensic Membre non connecté
Booster Mortier
-
Booster Mortier
- Voir le profil du membre Forensic
- Inscrit le : 18/12/2006
Un problème certainement simple à régler, j'ai un nombre que je souhaite convertir en "nombre d'heures". J'y arrive, mais le nombre d'heure n'est pas converti au format normal d'heures. Il est converti au format normal des nombres.
Ma fonction:
[code]
<?php
function convertTime($time) {
$time = $time/3600;
$time = round($time, 2);
$time = str_replace('.', ':', $time);
return $time;
}
?>
[/code]
On suppose que $time = 402993; Avec la fonction ci-dessus, le résultat est: 111:94...
Donc cent onze heures et je suppose que le 94 = 94% d'une heure.
J'ai essayé de faire un :
[code]$date = date('H:i
', 402993);echo $date;[/code]
Cela me donne: 10:56:33
Le résultat réel devrait être: 111h 56m 33s. Avec le test que j'ai fait, je ne suis certainement pas loin de la solution.
Quelqu'un aurait une idée de la procédure que je pourrais utiliser?
Forensic
Édité par Forensic Le 26/05/2007 à 00h59
Chercher sur le forum - /Consulter la Documentation - Consulter la Foire aux Questions (FAQ)
Dire bonjour et merci, c'est toujours apprécié et pensez à mettre vos messages en Réglé!
minirop Membre non connecté
Booster Bazooka
-
Booster Bazooka
- Voir le profil du membre minirop
- Inscrit le : 15/01/2006
- Site internet
[code]function convertTime($time) {
$nbDay = floor($time / 86400);
$time = $time - ($nbDay*86400);
echo 'debug : '.$time.'<br />';
$time = $time / 3600;
$time = round($time, 2);
$time = str_replace('.', ':', $time);
return $time;
}[/code]
mais avec ceci je trouve 15h et non 16h, car che zmoi "date('H:i
', 402993);" donne "16h56m33s"
CrowkaiT Membre non connecté
-
Modérateur
- Voir le profil du membre CrowkaiT
- Inscrit le : 17/06/2005
- Site internet
- Groupes :
-
Equipe Historique
Avec ceci ça devrai marcher

[code]<?php function convertTime($time)
{
$heures = floor($time/3600);
$time -= $heures * 3600;
$minutes = $time/60;
$time -= $minutes * 60;
return floor($heures) . 'H '. floor($minutes) . 'm ' . $time . 's';
} ?>[/code]
Moi je trouve 111H 56m 0s
Pas de support par messages privés! Pensez à mettre vos messages en réglé en cliquant sur le bouton réglé!
Forensic Membre non connecté
Booster Mortier
-
Booster Mortier
- Voir le profil du membre Forensic
- Inscrit le : 18/12/2006
C'était bien ce que je croyais au niveau de la fonction date(). En effet, cela fonctionne bien, sauf au niveau des secondes. Cela affiche toujours zéro. J'ai donc modifié un peu la fonction que tu m'as donné et tout fonctionne correctement. Je dois quand même t'avouer que je ne comprend pas comment elle fait pour déduire les minutes et les secondes... mais comme ça fonctionne, je me creuserai la tête plus tard.
[code]<?php
function convertTime($time)
{
$heures = floor($time/3600);
$time -= $heures * 3600;
$minutes = floor($time/60);
$time -= $minutes * 60;
return $heures . ':'. $minutes . ':' . $time . '';
}
?>[/code]
Merci encore!
Forensic
Chercher sur le forum - /Consulter la Documentation - Consulter la Foire aux Questions (FAQ)
Dire bonjour et merci, c'est toujours apprécié et pensez à mettre vos messages en Réglé!
CrowkaiT Membre non connecté
-
Modérateur
- Voir le profil du membre CrowkaiT
- Inscrit le : 17/06/2005
- Site internet
- Groupes :
-
Equipe Historique
Sinon pour t'expliquer comment elle marche c'est tout simple:
Je calcule combien il y a d'heures pleines dans le nombre de secondes que tu envoies. Je prend le nombre de secondes d'origine que je retranche du nombre de secondes dans une heure multiplié par le nombre d'heures pleines. Je fais de même pour les minutes, ce qui reste à la fin sont des secondes

Juste pour la petite histoire, cette fonction est extraite de la prochaine version de PHPBoost (à l'origine je l'ai codée en Javascript), elle sert à faire un compte à rebours.
Pas de support par messages privés! Pensez à mettre vos messages en réglé en cliquant sur le bouton réglé!
Ptithom Membre non connecté
-
Modérateur
- Voir le profil du membre Ptithom
- Inscrit le : 07/11/2006
- Site internet
- Groupes :
-
Equipe Historique
Citation:
elle sert à faire un compte à rebours.je sens qu'il y en a qui vont te maudire avec...
Toujours OSER, savoir parfois CEDER, mais jamais RENONCER!
Mes sites : http://www.leschinchillas.org / http://www.chateau-de-lastours.fr
Mes sites : http://www.leschinchillas.org / http://www.chateau-de-lastours.fr
Snipefire Membre non connecté
Booster Mortier
-
Booster Mortier
- Voir le profil du membre Snipefire
- Inscrit le : 09/09/2006
Kak Miortvi Pengvin Membre non connecté
Booster Missile
-
Booster Missile
- Voir le profil du membre Kak Miortvi Pengvin
- Inscrit le : 10/03/2006
- Site internet
Blast from the past
Forensic Membre non connecté
Booster Mortier
-
Booster Mortier
- Voir le profil du membre Forensic
- Inscrit le : 18/12/2006
T'as une idée de ce que je pourrais faire pour gérer les zéros lorsque le nombre de minutes (ou de secondes) est inférieur à 10? Exemple: 10h09m04s
Forensic
Chercher sur le forum - /Consulter la Documentation - Consulter la Foire aux Questions (FAQ)
Dire bonjour et merci, c'est toujours apprécié et pensez à mettre vos messages en Réglé!
minirop Membre non connecté
Booster Bazooka
-
Booster Bazooka
- Voir le profil du membre minirop
- Inscrit le : 15/01/2006
- Site internet
echo sprintf("%2d",1);
?>[/code]
ceci devrait afficher "01"
Forensic Membre non connecté
Booster Mortier
-
Booster Mortier
- Voir le profil du membre Forensic
- Inscrit le : 18/12/2006
Merci pour la réponse. Est-ce que ça devrait ou ça affiche 01? Parce qu'ici ça affiche "1" et non 01
Citation:
d : l'argument est traité comme un entier, et présenté comme un nombre décimal signé.Extrait de la doc cette citation, Ça signifie quoi? J'en suis pas certain...
Forensic
Chercher sur le forum - /Consulter la Documentation - Consulter la Foire aux Questions (FAQ)
Dire bonjour et merci, c'est toujours apprécié et pensez à mettre vos messages en Réglé!
minirop Membre non connecté
Booster Bazooka
-
Booster Bazooka
- Voir le profil du membre minirop
- Inscrit le : 15/01/2006
- Site internet
voilà le code :
[code]<?php
echo sprintf("%02d",1);
?>[/code]
le 0 est le caractère de remplissage et le 2 est le nombre maximum de caratères à afficher si le paramètre est trop court
Forensic Membre non connecté
Booster Mortier
-
Booster Mortier
- Voir le profil du membre Forensic
- Inscrit le : 18/12/2006
Merci, c'est bel et bien fonctionnel. Ça m'aura permis de découvrir une fonction que je ne connaissais pas. Merci encore!
Forensic
Chercher sur le forum - /Consulter la Documentation - Consulter la Foire aux Questions (FAQ)
Dire bonjour et merci, c'est toujours apprécié et pensez à mettre vos messages en Réglé!
Répondre
Vous n'êtes pas autorisé à écrire dans cette catégorie