Bloqué sur format heure avec tickcount

Résolu
Signaler
Messages postés
251
Date d'inscription
samedi 19 novembre 2005
Statut
Membre
Dernière intervention
2 novembre 2010
-
Messages postés
251
Date d'inscription
samedi 19 novembre 2005
Statut
Membre
Dernière intervention
2 novembre 2010
-
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

Messages postés
7668
Date d'inscription
samedi 5 novembre 2005
Statut
Membre
Dernière intervention
22 août 2014
27
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 ???
Messages postés
251
Date d'inscription
samedi 19 novembre 2005
Statut
Membre
Dernière intervention
2 novembre 2010

ben faut croire que ce sont les choses les plus simples qui me bloquent...(t'es vache avec le niveau CE2 quand meme ...)
Messages postés
251
Date d'inscription
samedi 19 novembre 2005
Statut
Membre
Dernière intervention
2 novembre 2010

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"
Messages postés
7668
Date d'inscription
samedi 5 novembre 2005
Statut
Membre
Dernière intervention
22 août 2014
27
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)...


 
Messages postés
7668
Date d'inscription
samedi 5 novembre 2005
Statut
Membre
Dernière intervention
22 août 2014
27
Je te signale que ton code est inexact !!!
Tu ne vois par pourquoi ????


Regarde-le bien .... c'est évident !
Messages postés
251
Date d'inscription
samedi 19 novembre 2005
Statut
Membre
Dernière intervention
2 novembre 2010

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.
Messages postés
251
Date d'inscription
samedi 19 novembre 2005
Statut
Membre
Dernière intervention
2 novembre 2010

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 ?
Messages postés
7668
Date d'inscription
samedi 5 novembre 2005
Statut
Membre
Dernière intervention
22 août 2014
27
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 ...
Messages postés
7668
Date d'inscription
samedi 5 novembre 2005
Statut
Membre
Dernière intervention
22 août 2014
27
Ah !
Je vois que tu as corrigé... c'est moins mal ainsi ...
Moins mal ne veut pas dire parfait ... cherche pourquoi... (tout seul)...
Messages postés
251
Date d'inscription
samedi 19 novembre 2005
Statut
Membre
Dernière intervention
2 novembre 2010

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