Bloqué sur format heure avec tickcount

Résolu
Tyrell2 Messages postés 251 Date d'inscription samedi 19 novembre 2005 Statut Membre Dernière intervention 2 novembre 2010 - 16 avril 2007 à 18:50
Tyrell2 Messages postés 251 Date d'inscription samedi 19 novembre 2005 Statut Membre Dernière intervention 2 novembre 2010 - 19 avril 2007 à 11:53
rebonjour, encore une bonne grosse question de débutant...

j'affiche betement dans un label le temps depuis lequel mon PC a demarré
 grace à My.Computer.Clock.TickCount

seulement, avoir le temps en millisecondes c'est pas top et je bloque depuis un moment pour l'avoir
au fomat heures / minutes qui est quand meme beaucoup plus parlant...

s'il vous plait, Heeeeeeeeeeeeeeeeeeeelp !

10 réponses

jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
16 avril 2007 à 19:01
Bonjour !
Quand même !
1000 millisecondes dans 1 secondes
60 secondes dans une minute
60 minutes dans une heure ...

C'est un calcul pour un élève de CE2 !!! (de façon scolaire)


Si tu veux le faire autrement : utilise donc Mod et \ en commençant par les millisecondes (que tu as déjà)
Raisonnement simple (entre secondes et minutes, par exemple) :

Private Sub Command1_Click()
  secondes = 75
  minutes = secondes \ 60
  secondes = secondes Mod 60
  MsgBox minutes & "  " & secondes
End Sub

A toi de continuer ainsi, quand même, non ???
3
Tyrell2 Messages postés 251 Date d'inscription samedi 19 novembre 2005 Statut Membre Dernière intervention 2 novembre 2010
16 avril 2007 à 19:11
ben faut croire que ce sont les choses les plus simples qui me bloquent...(t'es vache avec le niveau CE2 quand meme ...)
0
Tyrell2 Messages postés 251 Date d'inscription samedi 19 novembre 2005 Statut Membre Dernière intervention 2 novembre 2010
16 avril 2007 à 19:49
En fait c'est vrai que c'est vraiment simple à calculer...

j'ai surtout perdu du temps dans mes recherches à chercher l'existance d'un code de conversion par framework (parce que c'est nul je trouve de ne donner que les millisecondes  avec My.computer.etc... qui est bien pratique)

donc comme je suis obligé de faire par moi meme j'ai pondu ça :
c'est correct ou ya mieux encore d'apres toi / vous ? (en tout cas ça marche)

Dim Millisecondes
As
Integer =
My.Computer.Clock.TickCount

Dim heures, minutes, jours
As
Integerminutes = Millisecondes / 60000

heures = Millisecondes / 3600000

jours = heures / 24

If minutes > 60
Thenheures = heures + 1

minutes = minutes - 60

If heures > 24
Thenjours = jours + 1

heures = heures - 24

End
If

End
IfLabel10.Text = jours &

" Jours " & heures &
" H " & minutes &
" min"
0
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
16 avril 2007 à 23:45
Bien sur que celà marche (tu as choisi la formule "scolaire")


Regarde maintenant ceci (écrit avec VB6) :


Private Sub Command1_Click()
   Dim millisecondes As Long, secondes As Long, minutes As Long, heures As Long, comment As Long
   millisecondes = 445893211
   calculons millisecondes, secondes, 1000
   calculons secondes, minutes, 60
   calculons minutes, heures, 60
   calculons heures, jours, 24
   MsgBox jours & " jours " & heures & " heures " & minutes & " minutes " & secondes & _
   " secondes " & millisecondes & " millisecondes"
End Sub


Private Sub calculons(n1, n2, comment)
  n2 = n1 \ comment
  n1 = n1 Mod comment
End Sub

Il te reste à  transposer en VB.Net (ce devrait être très facile)...


 
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
16 avril 2007 à 23:57
Je te signale que ton code est inexact !!!
Tu ne vois par pourquoi ????


Regarde-le bien .... c'est évident !
0
Tyrell2 Messages postés 251 Date d'inscription samedi 19 novembre 2005 Statut Membre Dernière intervention 2 novembre 2010
18 avril 2007 à 22:43
Merci de penser que ça devrait etre tres facile pour moi... pour info mes debuts en programmation en vb.net commencent à decembre dernier, et ma "formation" à ce soft se resume en tout et pour tout à 1 semaine d'initiation... Je n'ai peut ete pas encore les bons mecanismes qui font que je te semble si "scolaire". Apres le reste, c'est du google , de la lecture perso ,et du vbfrance of course   alors y a encore du boulot si tu vois ce que je veux dire...

sinon :

1/ non je ne vois pas l'ereur dans ma formule scolaire (si ce n'est que je ne gere que les minutes > à 60 pour incrementer les heures et donc que si elles depassent 120 ça affiche toujours un chiffre en minutes eroné (sup à 60) . y en a d'autres ?

2/ dans tes exemples tu part toujours d'un chiffre "minutes" ou "millisecondes" pré défini, alors que moi je me sert de la fonction
my.computer.clock.tickcount pour essayer d'avoir le temps ecoulé depuis l'allumage du PC. donc forcement c'est plus compliqué qu'une simple division à partir d'un chiffre connu.

il faut qu'avec un chiffre en milliseconde aléatoire (sur plusieurs jours par exemple) j'arrive à avoir un resultat coherent en "jours/ heures / minutes" (avec 23 heures max et 59 minutes max quoi)

merci de ton aide, je continue à reflechir à ça.
toute suggestion est forcement bienvenue.
0
Tyrell2 Messages postés 251 Date d'inscription samedi 19 novembre 2005 Statut Membre Dernière intervention 2 novembre 2010
18 avril 2007 à 22:56
par exemple ça, ça a l'air mieux :


Dim
Millisecondes

As



Integer
=

My
.Computer.Clock.TickCount


Dim
heures, minutes, jours

As



Integer

minutes = Millisecondes / (60000)


heures = minutes / (60)


jours = heures / (24)







If
minutes > 59

Then

heures = heures + (minutes / 60)


minutes = 0







End



If
Label10.Text = jours &

" Jours " & heures &
" H " & minutes &
" min"

pas trop scolaire ?
0
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
18 avril 2007 à 22:57
Ton erreur n'a absolument rien à voir avec tes connaissances de VB ou d'un quelconque langage de programmation....

La preuve ?
La voilà :

Ton code :

Dim Millisecondes AsInteger = My.Computer.Clock.TickCount








Dim heures, minutes, jours AsInteger



minutes = Millisecondes / 60000 
'donc tu comptes les minutes ici à partir des millisecondes

heures = Millisecondes / 3600000 
' et tu comptes les heures, maintenant, toujours à partir du même nombre de millisecondes (et quid des millisecondes qui ont déjà été utilisées à compter tes minutes ? elles font ici double emploi.


Comme tu le vois, celà relève d'autre chose que de la connaissance de VB.... il me semble ...
0
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
18 avril 2007 à 23:01
Ah !
Je vois que tu as corrigé... c'est moins mal ainsi ...
Moins mal ne veut pas dire parfait ... cherche pourquoi... (tout seul)...
0
Tyrell2 Messages postés 251 Date d'inscription samedi 19 novembre 2005 Statut Membre Dernière intervention 2 novembre 2010
19 avril 2007 à 11:53
c'te fois je crois que je le  tiens  :

Dim Millisecondes
As
Integer =
My.Computer.Clock.TickCount

Dim heures, minutes, jours
As
Integerminutes = Millisecondes / (60000)

heures = minutes / 60

jours = heures / (24)

If minutes > 59
Thenminutes = minutes - (heures * 60)

If heures > 24
Thenheures = heures - (jours * 24)

End

If
0
Rejoignez-nous