Décompte de temps

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Décompte de temps

Re: Décompte de temps

par moogli » 26 sept. 2016, 11:09

voui tu peux voir ça comme ça :-)~

y a rien de complexe, juste l'utilisation d'un modèle full objet qui ne ressemble pas a du procédurale à l'utilisation, c'est une habitude à prendre ;)

@+

Re: Décompte de temps

par fitnopk » 26 sept. 2016, 10:47

salut,

pour datetime => http://php.net/manual/fr/class.datetime.php , et la méthode diff en particulier : http://php.net/manual/fr/datetime.diff.php
pour les paramètre l'utilisation de @ indique que le paramaètre est un timestamp unix http://php.net/manual/fr/datetime.formats.compound.php
du coup @0 c'est le timestamp zéro.
@$seconds c'est le timestamp qui correspond à $second (en secondes).

ensuite diff c'est la différence entre dtF et dtT, format format le retour (4 heures 34 minutes 27 secondes)
C'est ce qui est indiqué sur le lien de @rthur

dans ton cas tu va vouloir faire la différence entre start time et maintenant.
du coup startTime est a déclarer, comme tu le fait, avant la boucle, si tu ne passe pas de paramètre à dateTime c'est 'now' qui est utilisé.
dans la boucle instanciation du dateTime "courant" + diff avec le départ et affichage au format que tu souhaites avec format (du coup tu te fait pas chier à gérer les conversions ;) )
tu vas alléger un peu le code et simplifier la maintenance ;)

@+
J'comprends un peu mieux mais je crois qu'il me manque une notion de classe et d'objet pour vraiment comprendre xD Du coup j'vais me chercher ça, merci x)
EDIT: en fait c'est assez similaire aux structures du C si on considère une classe pouvant stocker des fonctions (méthodes) et des variables(propriétés) comme une structure, qu'on la définit avec un = new <nom> au lieu de struct <nom> et qu'on accède a ses éléments avec des ->

Re: Décompte de temps

par moogli » 26 sept. 2016, 10:29

salut,

pour datetime => http://php.net/manual/fr/class.datetime.php , et la méthode diff en particulier : http://php.net/manual/fr/datetime.diff.php
pour les paramètre l'utilisation de @ indique que le paramaètre est un timestamp unix http://php.net/manual/fr/datetime.formats.compound.php
du coup @0 c'est le timestamp zéro.
@$seconds c'est le timestamp qui correspond à $second (en secondes).

ensuite diff c'est la différence entre dtF et dtT, format format le retour (4 heures 34 minutes 27 secondes)
C'est ce qui est indiqué sur le lien de @rthur

dans ton cas tu va vouloir faire la différence entre start time et maintenant.
du coup startTime est a déclarer, comme tu le fait, avant la boucle, si tu ne passe pas de paramètre à dateTime c'est 'now' qui est utilisé.
dans la boucle instanciation du dateTime "courant" + diff avec le départ et affichage au format que tu souhaites avec format (du coup tu te fait pas chier à gérer les conversions ;) )
tu vas alléger un peu le code et simplifier la maintenance ;)

@+

Re: Décompte de temps

par fitnopk » 26 sept. 2016, 09:58

Bonjour,

Voici un exemple à adapter selon ton besoin :
<?php

function secondsToTime($seconds) {
	$dtF = new DateTime("@0");
	$dtT = new DateTime("@$seconds");
	return $dtF->diff($dtT)->format('%h heures %i minutes %s secondes');
}

echo secondsToTime(16467);
Démo : https://eval.in/648603
Je dois avouer que je comprends pas grand chose là surtout sur le return :shock:

Re: Décompte de temps

par @rthur » 23 sept. 2016, 18:30

Bonjour,

Voici un exemple à adapter selon ton besoin :
<?php

function secondsToTime($seconds) {
	$dtF = new DateTime("@0");
	$dtT = new DateTime("@$seconds");
	return $dtF->diff($dtT)->format('%h heures %i minutes %s secondes');
}

echo secondsToTime(16467);
Démo : https://eval.in/648603

Décompte de temps

par fitnopk » 23 sept. 2016, 18:16

Coucou c'est encore moiii

J'essais de faire un petit décompte de temps pendant la récupération des données d'un fichier pour que l'utilisateur puisse voir combien de temps ça fait et se demander si ça commence pas à faire trop long (et surtout si c'est pas figé :lol: )

Code : Tout sélectionner

$startTime = time(); while (/**$temp = fgetcsv($fileFd, 0, "\t")**/42) { print "\rRécupération des données de $name... (temps écoulé: "; if (($time = time() - $startTime) > 59) { print $time / 60 . "min" . $time - $time / 60 * 60 . "s)"; } else { print $time . "s)"; } /** $file[] = $temp; **/ }
Au début je faisais time() - $startTime à chaque tour de boucle et ça faisait un bon compteur en secondes, puis après j'ai voulu faire un truc pour qu'au delà des 59 secondes ça affiche en minutes (1min42s, etc) mais ça amrche pas du tout :lol:
Je me demandai s'il y avait pas une fonction pour ça dans la vaste libraire du php? Sinon j'veux bien un petit indice parce que mon calcul a l'air foireux :lol: