Newsgroup: it.comp.lang.visual-basic
Titolo: convertire millisecondi in ore minuti e secondi

dato un numero di millisecondi come si possono convertire in ore.minuti e 
secondi?
 
grazie. 
 

 secondi?
 
 
se  MillTime sono i  Millisecondi :
 
Sec = (MillTime \ 1000) mod 60
Min = (Sec \ 60) Mod 60
Hrs = (Min \ 60) Mod 24
dMillTime = TimeSerial(Hrs, Min, Sec)
 
per riconvertire in  millisecondi:
MillTime = 1000 * DatePart("s", dMillTime) + 60000 * DatePart("n", 
dMillTime) + 3600000 * DatePart("h", dMillTime) 
 
 


 
Non mi sembra giusto, se Sec=0, questa formula porta tutto a 0
io direi:
Hrs= Fix(MillTime/1000/60/60)
Min= Fix(60*((MillTime/1000/60/60) - Fix(MillTime/1000/60/60)))
Sec= 60*(60*((MillTime/1000/60/60) - Fix(MillTime/1000/60/60))-Min)
 

 Non mi sembra giusto, se Sec=0, questa formula porta tutto a 0
 
infatti Sec � zero se i millisecondi sono zero. 
 
 

infatti Sec � zero se i millisecondi sono zero.
 
danke!!
 


per un'ora abbiamo 3600000 millisecondi,
e in questo caso abbiamo
Hrs= 1
Min= 0
Sec= 0
 
Con la tua formula invece sarebbe tutto zero!
Stavolta hai capito?
 

 Stavolta hai capito?
 
Un calcolo del genere va effettuato al contrario.
Se non ho toppato qualcosa:
 
'****************
Dim Millisecondi As Long
Dim Ore As Long
Dim Minuti As Long
Dim Secondi As Long
Millisecondi = 3679873
 
Ore = Millisecondi \ 3600000
Debug.Print "Ore: " & Ore
Millisecondi = Millisecondi Mod 3600000
Minuti = Millisecondi \ 60000
Debug.Print "Minuti: " & Minuti
Millisecondi = Millisecondi Mod 60000
Secondi = Millisecondi \ 1000
Debug.Print "Secondi: " & Secondi
Millisecondi = Millisecondi Mod 1000
Debug.Print "Millisecondi residui: " & Millisecondi
 
'****************
 
Bye, G.


 
Cosï¿œ va bene, ma se dichiari secondi come single fai prima,
e ti va a pennello anche la mia formula.
 

Parliamo di VB6 o VB.Net?
Se sei in net, puoi usare il metodo AddMilliSeconds del tipo Date.
Una cosa del genere:
Dim ms As Integer = 350000
        Dim dt As Date = New Date().AddMilliseconds(ms)
        Debug.Print(dt.ToLongTimeString)
 
Come vedi ho valorizzato una variabile ms (i millisecondi) assegnandoli un 
valore che mi piaceva :)
Poi ho usato il metodo AddMilliSeconds esposto dal tipo Date ed ho ottenuto 
una nuova data.
A questo punto posso usare la nuova data e, ad esempio, stamparmi l'orario.
 

"salclem2"  ha scritto nel messaggio news:l7v7b5$a5g$1...@speranza.aioe.org...

ho provato questo codice ma il risultato lo ha messo in secondi anzich� in 
minuti secondo voi dov'� l'errore?
cio� mi aspettavo 27 minuti stimati invece a scritto 00:00:27 cio� secondi
 
questo � il codice usato
 
    Dim MillTime
    Dim sec
    Dim min
    Dim hrs
 
    MillTime = (2500 + DLookup("massivedelay", "aziendali")) * Me.dainviare
    sec = (MillTime \ 1000) Mod 60
    min = (sec \ 60) Mod 60
    hrs = (min \ 60) Mod 24
    Me.TEMPOSTIMATO = TimeSerial(hrs, min, sec)
 
 
 

Bye, G.
 
Confermo ho usato questo codice e funziona grazie.
 
 

Usa questo e non ci pensi pi�,
� la routine di Paperino ottimizzata
e pronta all'uso
 
Private Sub Form_Load()
    Millisecondi = 3679873
    Debug.Print DateFormat(Millisecondi)
End Sub
Public Function FormattaOra(ByVal Millisecondi As Single) As String
    Dim Ore As String, Minuti As String, Secondi As String
    Ore = Format(Millisecondi \ 3600000, "00")
    Millisecondi = Millisecondi Mod 3600000
    Minuti = Format(Millisecondi \ 60000, "00")
    Millisecondi = Millisecondi Mod 60000
    Secondi = Format(Millisecondi \ 1000, "00")
    DateFormat = Ore & "." & Minuti & "." & Secondi
End Function
 
Oggi mi sento buono 
 

Ho dovuto fare una correzione...
 
Private Sub Form_Load()
    Millisecondi = 0
    Debug.Print FormattaOra(Millisecondi)
End Sub
Public Function FormattaOra(ByVal Millisecondi As Single) As String
    Dim Ore As String, Minuti As String, Secondi As String
    Ore = Format(Millisecondi \ 3600000, "00")
    Millisecondi = Millisecondi Mod 3600000
    Minuti = Format(Millisecondi \ 60000, "00")
    Millisecondi = Millisecondi Mod 60000
    Secondi = Format(Millisecondi \ 1000, "00")
'    Millisecondi = Millisecondi Mod 1000
    FormattaOra = Ore & "." & Minuti & "." & Secondi
End Function