Phénol Posté 27 Février 2007 Posté 27 Février 2007 Bonjour, J'aimerais pouvoir ajouter des durées en minutes afin d'obtenir un résultat en minutes (ou heures et minutes si nécessaire) via une fonction Calcul_Duree() par exemple. Exemple : echo Calcul_Duree(90); // Résultat 1h 30min ou encore echo Calcul_Duree(75); // Résultat 1h 15min Merci par avance pour votre aide !
TheRec Posté 27 Février 2007 Posté 27 Février 2007 Re-bonsoir Pour plus de souplesse, je te conseilles d'avoir une fonction permettant de faire ce que tu souhaite depuis un nombre de secondes... pour plusieurs raisons (la fonction time, entre autres renvoie un nombre de secondes et donc les calculs s'effectuent souvent avec cette unité). function duration($timestamp) { $years = floor($timestamp / (60*60*24*365)); $timestamp %= 60*60*24*365; $weeks = floor($timestamp / (60*60*24*7)); $timestamp %= 60*60*24*7; $days = floor($timestamp / (60*60*24)); $timestamp %= 60*60*24; $hrs = floor($timestamp / (60*60)); $timestamp %= 60*60; $mins = floor($timestamp / 60); $secs = $timestamp % 60; $str = ""; if ($years >= 1) { $str .= $years.' année'.($years>1 ? 's' : '').' '; } if ($weeks >= 1) { $str .= $weeks.' semaine'.($weeks>1 ? 's' : '').' '; } if ($days >= 1) { $str .= $days.' jour'.($days>1 ? 's' : '').' '; } if ($hrs >= 1) { $str .= $hrs.' heure'.($hrs>1 ? 's' : '').' '; } if ($mins >= 1) { $str .= $mins.' minute'.($mins>1 ? 's' : '').' '; } if ($secs >= 1) { $str .= $secs.' seconde'.($secs>1 ? 's' : '').' '; } return $str;} Source : PHP Help: duration() Je l'ai juste modifiée afin que les unités soient accordées correctement avec le nombre ou le chiffre qui les précèdent
Phénol Posté 28 Février 2007 Auteur Posté 28 Février 2007 (modifié) Merci 1000 fois ! Ca peut me correspondre parfaitement... Je vais abuser mais : Est-il possible de ne pas passer à l'étape Jours/Mois/Années ? Je m'explique : je développe une application où je dois afficher un temps de travail (en heures). Le problème avec la fonction que tu m'as proposée est que si une personnes travaille plus de 24h, cela passe en jours. Je voudrais rester en heures (25h, 27h, 35h etc !). Merci par avance pour ton aide précieuse ! Modifié 28 Février 2007 par Phénol
TheRec Posté 28 Février 2007 Posté 28 Février 2007 Bonjour, Hé bien, tu n'as pas dû cherché bien loin pour modifier cette fonction... enfin donne cela : function duration($timestamp) { $hrs = floor($timestamp / (60*60)); $timestamp %= 60*60; $mins = floor($timestamp / 60); $secs = $timestamp % 60; $str = ""; if ($hrs >= 1) { $str .= $hrs.' heure'.($hrs>1 ? 's' : '').' '; } if ($mins >= 1) { $str .= $mins.' minute'.($mins>1 ? 's' : '').' '; } if ($secs >= 1) { $str .= $secs.' seconde'.($secs>1 ? 's' : '').' '; } return $str;} Bref, j'ai juste supprimé les parties qui correspondaient à ce que tu ne souhaitait plus voir apparaître... le calcul s'effectuant sur la même variable ($timestamp) à laquelle on attribue le reste de la division (%=) à chaque saut d'unité, en partant bien entendu de la plus grosse unité que l'on souhait afficher, la modification n'est pas plus compliquée que cela. Bonne continuation.
Phénol Posté 28 Février 2007 Auteur Posté 28 Février 2007 Ah ! Je pensais pas que ça serait si simple, je pensais faire ça et j'étais persuadé de partir sur une voie trop bateau pour fonctionner !! Merci encore !
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant