c ++ - \_\_time32\_t tid præcision?

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg bruger en api, der bruger to \_\_time32\_t objekter til at åbne en markør i en database og angiver start- og sluttidspunktet for at forespørge over.


Har \_\_time32\_t sekundær (millisekund) tidsprecision? MSDN er noget uklart.


Time32\_t-objektet, jeg har, gør dette:


currentET-=.1;


Som jeg forventede at give mig tiden inde i currentET minus 10 millisekunder, men alt det gør er at trække en fuld sekund, som om jeg gjorde det her:


currentET-=1;


Hvordan kan jeg få denne præcision tilbage i time32\_t-objektet?

Bedste reference


\_\_time32\_t er bare en integreret type - den har ikke nogen særlig opløsning uden at være integreret. Typiske funktioner \_\_time32\_t bruges med har dog 1 sekunders opløsning dog.

Andre referencer 1


Her er et eksempel på noget, der genererer en sekundær præcis tidsudgang. Forgive brugen af ​​TCHAR-makroerne ... gamle kodebase.


void getCurrTimeString(TCHAR* mytime)
{
    \_timeb myTime;
    struct tm * timeinfo;

    \_ftime64\_s( &myTime );
    time\_t rawtime = myTime.time;
    unsigned short myMillis = myTime.millitm;
    timeinfo = localtime ( &rawtime );
    \_stprintf(mytime,\_T("\%d-\%02d-\%02dT\%02d:\%02d:\%02d.\%03d"),
        (1900+timeinfo->tm\_year),
        (timeinfo->tm\_mon+1),
        timeinfo->tm\_mday,
        timeinfo->tm\_hour,
        timeinfo->tm\_min,
        timeinfo->tm\_sec,
        myMillis);
}