Oppure

Loading
20/03/10 20:01
robrock80
Salve a tutti. Come faccio a ottenere l'ora corrente in millisecondi?
aaa
20/03/10 20:20
nessuno
#include <time.h> 
   
time_t msec;
	
msec = time(NULL) * 1000;
Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità.
20/03/10 20:52
robrock80
Avevo già provato come dici tu ma ci sono dei problemi: mi restituisce si il tempo in millisecondi, ma le ultime 3 cifre sono sempre uguali
aaa
20/03/10 22:07
NickoMaiden
ho trovato una soluzione, macchinosa però ci si arriva al risultato.
// ci sarebbe da includere windows.h!
    SYSTEMTIME a;     //questa è la dichiarazione di questo tipo di dato che è uno struct
                      // msdn ci dice che la struttura ha questi campi:
                      // wDay wHour wMinute wSecond wMilliseconds 
                      
    GetSystemTime(&a); //funzione che passa come indirizzo appunto la struttura e la riempie

    cout<<a.wHour<<"   "<<a.wMinute<<"   "<<a.wSecond<<"   "<<a.wMilliseconds<<"\n\n";
    //in questo cout ho messo gli elementi che effettivamente ci servono (tutti tranne wDay)
    // non che serva questa stampa, è giusto per capire =)

    //bene, basta convertire tutto in millisecondi e sommare!

    long int orarioms=0;
    orarioms=a.wMilliseconds+(a.wSecond*1000)+((a.wMinute*60)*1000)+(((a.wHour*60)*60)*1000);
    /* beh la cosa è semplice:
    1 secondo= 1000 millisecondi
    1 minuto = 60 secondi =60x1000 millisecondi
    1 ora=60 minuti= 60*60 secondi=60*60*1000 millisecondi
    ovviamente si può anche scrivere direttamente il risultato, però cosi secondo me è + leggibile. poi nell'eventualità quindi potrebbe essere anche benissimo:
orarioms=a.wMilliseconds+(a.wSecond*1000)+(a.wMinute*60000)+(a.wHour*3600000);
    */
    cout<<orarioms; // ecco quello che ti serviva =)


mi aspetto linciaggi xD

ps: non so come ho fatto ma per sbaglio al posto di rispondere ti ho mandato un messaggio privato xD
Ultima modifica effettuata da NickoMaiden 20/03/10 22:28
aaa
20/03/10 22:17
nessuno
Il problema è che il sistema non ha la precisione del millisecondo, anzi, la precisione è intorno a 15-20 millisecondi ...

Bisogna capire quindi, se ti serve maggiore precisione o no.
Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità.
20/03/10 22:25
NickoMaiden
Postato originariamente da nessuno:

Il problema è che il sistema non ha la precisione del millisecondo, anzi, la precisione è intorno a 15-20 millisecondi ...

Bisogna capire quindi, se ti serve maggiore precisione o no.


in ogni caso, sarebbe possibile gestire un programma al millisecondo? cioè mi spiego, in ogni caso anche se fosse preciso il sistema ci andrebbe di mezzo il tempo di esecuzione per fare ad esempio quel calcolo che da appunto questi millisecondi passati la mezzanotte e quindi secondo me non è una cosa possibile, quindi non credo che lui abbia avuto un intenzione simile (o almeno lo spero :D)
aaa
20/03/10 22:46
nessuno
Postato originariamente da NickoMaiden:
in ogni caso, sarebbe possibile gestire un programma al millisecondo?


Perchè no ?

cioè mi spiego, in ogni caso anche se fosse preciso il sistema ci andrebbe di mezzo il tempo di esecuzione per fare ad esempio quel calcolo che da appunto questi millisecondi passati la mezzanotte


Beh ... sono calcoli eseguiti in microsecondi ... il problema è la precisione della misurazione del tempo del sistema operativo ...

Si potrebbe usare la API

GetTickCount
msdn.microsoft.com/en-us/library/…(VS.85).aspx

che si può chiamare velocemente e restituisce direttamente i millisecondi passati dallo startup del sistema, ma è comunque soggetta alla risoluzione standard del sistema (i famosi 15-20 millisecondi).

In alternativa, si può usare un "multimedia timer" o un "timer ad alta risoluzione" ma qui il discorso diventa diverso e dipende molto da cosa si vuole fare.

P.S. Per inciso, anche il valore wMilliseconds è soggetto alla precisione del sistema ... non avrai mai che tra una chiamata e l'altra, per quanto vicine, tu possa rilevare valori differenti per meno di 15-20 millisecondi.
Ultima modifica effettuata da nessuno 20/03/10 22:51
Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità.
20/03/10 23:04
NickoMaiden
timer ad alta risoluzione mmm interessante!
cmq ho appena fatto una prova, (almeno nel mio pc) ci sono dai 30 ai 50 ms di distacco inoltre si ripetono in maniera maniacale 31 e 47 :O
misteri xD
cmq sti timer ad alta risoluzione com'è che teoricamente funzionano( tanto siamo ancora in argomento :D)?
aaa