前兩天遇到一個要將字符串形式的時間轉化成用毫秒表示的時間,作為一個初學者的我一下子沒有了頭緒,所以只能各種搜索。終於實現了自己想要的結果。先上代碼,如果有不對的地方,希望大家指正。
1 #include <iostream> 2 #include <afx.h> //在非MFC下,使用CString需要包含這個頭文件 3 using namespace std; 4 5 INT64 ChangeTimeStringToMillisconds(CString strTime); 6 7 void main() 8 { 9 CString str = "2014-11-4 21:39:01.234"; 10 INT64 miao = ChangeTimeStringToMillisconds(str); 11 //cout << miao << endl; //<<操作符沒有被INT64重載 error C2593: 'operator <<' is ambiguous 12 printf("%I64d\n", miao); 13 } 14 15 INT64 ChangeTimeStringToMillisconds(CString strTime) 16 { 17 char buf[100]; 18 tm t; 19 int nms = 0; 20 memset(&t, 0, sizeof(tm)); 21 sscanf(strTime, _T("%[^\t]"), buf, 100); 22 sscanf(buf, _T("%d-%d-%d %d:%d:%d.%d"), &t.tm_year, &t.tm_mon, &t.tm_mday, &t.tm_hour, &t.tm_min, &t.tm_sec, &nms); 23 if ((t.tm_year >= 1900) 24 && (t.tm_mon >= 1 && t.tm_mon <= 12) 25 && (t.tm_mday >= 1 && t.tm_mday <= 31) 26 && (t.tm_hour >= 0 && t.tm_hour <= 59) 27 && (t.tm_min >= 0 && t.tm_min <= 59) 28 && (t.tm_sec >= 0 && t.tm_sec <= 59)) 29 { 30 CTime time(t.tm_year, t.tm_mon, t.tm_mday, t.tm_hour, t.tm_min, t.tm_sec); 31 INT64 nmstime = time.GetTime() * 1000 + nms; //time.GetTime()得到的結果是秒 32 return nmstime; 33 } 34 return 0; 35 }