Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - Ora corrente in millisecondi
Forum - C/C++ - Ora corrente in millisecondi

Pagine: [ 1 2 3 4 5 ] Precedente | Prossimo
Avatar
robrock80 (Normal User)
Pro


Messaggi: 143
Iscritto: 11/12/2006

Segnala al moderatore
Postato alle 21:01
Sabato, 20/03/2010
Salve a tutti. Come faccio a ottenere l'ora corrente in millisecondi?


Nel mondo ci sono 10 tipi di persone: quelle che capiscono il binario e quelle che non lo capiscono
PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 5475
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 21:20
Sabato, 20/03/2010
Codice sorgente - presumibilmente C/C++

  1. #include <time.h>
  2.    
  3. time_t msec;
  4.        
  5. msec = time(NULL) * 1000;



Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
PM Quote
Avatar
robrock80 (Normal User)
Pro


Messaggi: 143
Iscritto: 11/12/2006

Segnala al moderatore
Postato alle 21:52
Sabato, 20/03/2010
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


Nel mondo ci sono 10 tipi di persone: quelle che capiscono il binario e quelle che non lo capiscono
PM Quote
Avatar
NickoMaiden (Normal User)
Pro


Messaggi: 115
Iscritto: 10/06/2009

Segnala al moderatore
Postato alle 23:07
Sabato, 20/03/2010
ho trovato una soluzione, macchinosa però ci si arriva al risultato.
Codice sorgente - presumibilmente C/C++

  1. // ci sarebbe da includere windows.h!
  2.     SYSTEMTIME a;     //questa è la dichiarazione di questo tipo di dato che è uno struct
  3.                       // msdn ci dice che la struttura ha questi campi:
  4.                       // wDay wHour wMinute wSecond wMilliseconds
  5.                      
  6.     GetSystemTime(&a); //funzione che passa come indirizzo appunto la struttura e la riempie
  7.  
  8.     cout<<a.wHour<<"   "<<a.wMinute<<"   "<<a.wSecond<<"   "<<a.wMilliseconds<<"\n\n";
  9.     //in questo cout ho messo gli elementi che effettivamente ci servono (tutti tranne wDay)
  10.     // non che serva questa stampa, è giusto per capire =)
  11.  
  12.     //bene, basta convertire tutto in millisecondi e sommare!
  13.  
  14.     long int orarioms=0;
  15.     orarioms=a.wMilliseconds+(a.wSecond*1000)+((a.wMinute*60)*1000)+(((a.wHour*60)*60)*1000);
  16.     /* beh la cosa è semplice:
  17.     1 secondo= 1000 millisecondi
  18.     1 minuto = 60 secondi =60x1000 millisecondi
  19.     1 ora=60 minuti= 60*60 secondi=60*60*1000 millisecondi
  20.     ovviamente si può anche scrivere direttamente il risultato, però cosi secondo me è + leggibile. poi nell'eventualità quindi potrebbe essere anche benissimo:
  21. orarioms=a.wMilliseconds+(a.wSecond*1000)+(a.wMinute*60000)+(a.wHour*3600000);
  22.     */
  23.     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 il 20/03/2010 alle 23:28


char segreto[100]={"Abaca da cala da ciaccia"};
for(int i=0;i<100;i++)
  {
  if(segreto[ i ]=='a'||segreto[ i ]=='A')
    {
    segreto[ i ]='u';
    }
  }
cout<<segreto;
system("pause");
return EXIT_SUCCESS;
PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 5475
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 23:17
Sabato, 20/03/2010
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 ...
PM Quote
Avatar
NickoMaiden (Normal User)
Pro


Messaggi: 115
Iscritto: 10/06/2009

Segnala al moderatore
Postato alle 23:25
Sabato, 20/03/2010
Testo quotato

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)


char segreto[100]={"Abaca da cala da ciaccia"};
for(int i=0;i<100;i++)
  {
  if(segreto[ i ]=='a'||segreto[ i ]=='A')
    {
    segreto[ i ]='u';
    }
  }
cout<<segreto;
system("pause");
return EXIT_SUCCESS;
PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 5475
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 23:46
Sabato, 20/03/2010
Testo quotato

Postato originariamente da NickoMaiden:
in ogni caso, sarebbe possibile gestire un programma al millisecondo?



Perchè no ?

Testo quotato

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
http://msdn.microsoft.com/en-us/library/ms724408(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 il 20/03/2010 alle 23:51


Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
PM Quote
Avatar
NickoMaiden (Normal User)
Pro


Messaggi: 115
Iscritto: 10/06/2009

Segnala al moderatore
Postato alle 0:04
Domenica, 21/03/2010
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)?


char segreto[100]={"Abaca da cala da ciaccia"};
for(int i=0;i<100;i++)
  {
  if(segreto[ i ]=='a'||segreto[ i ]=='A')
    {
    segreto[ i ]='u';
    }
  }
cout<<segreto;
system("pause");
return EXIT_SUCCESS;
PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 5475
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 0:13
Domenica, 21/03/2010
Testo quotato

Postato originariamente da 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



Corretto ... 47-31 = 16 ... come ti dicevo ... tra 15 e 20 ms anche se ne sono passati 5 o 6 ... è la minima risoluzione del sistema (normalmente).

Testo quotato

cmq sti timer ad alta risoluzione com'è che teoricamente funzionano( tanto siamo ancora in argomento :D)?



Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
PM Quote
Pagine: [ 1 2 3 4 5 ] Precedente | Prossimo