2011-04-15 85 views
1

我正在使用api,它使用兩個__time32_t對象將遊標打開到數據庫,指定要查詢的開始和結束時間。__time32_t時間精度?

__time32_t是否具有亞秒(毫秒)的時間精度? MSDN有點不清楚。

的time32_t對象我這樣處理:

currentET-=.1; 

哪我希望給我currentET減去10毫秒的時間裏面,但它是所有減去一整秒,因爲如果我這樣做:

currentET-=1; 

我怎樣才能得到這個精度回到time32_t對象?

回答

5

__time32_t只是一個整數類型 - 它沒有任何特殊的分辨率,除了整數。雖然使用了的典型功能__time32_t,但具有1秒的分辨率。

0

下面是生成次秒精確時間輸出的示例。原諒使用TCHAR宏...舊代碼庫。

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); 
} 
+0

這怎麼可以用來接受一個__time32_t對象? – mattk 2011-04-15 13:08:50

+0

@mattk你不能以所需的精度使用'__time32_t'(打開這個修正),'_timeb'是我能看到的唯一方法。你應該能夠用現有的'__time32_t'對象代替我使用的'time_t rawtime'。在這種情況下,您還需要將'_localtime32'替換爲'localtime'。 另請參閱:http://msdn.microsoft.com/en-us/library/95e68951%28VS.80%29.aspx – Dennis 2011-04-15 14:29:36

+0

@mattk - 您應該接受答案。 – Dennis 2011-05-05 09:47:00