1.
使用ctime類(獲取系統當前時間,精確到秒)
cstring str; //
獲取系統時間
ctime tm;
tm=ctime::getcurrenttime();//
獲取系統日期
str=tm.format("
現在時間是%y年%m月%d日 %x");
messagebox(str,null,mb_ok);
a,從ctimet中提取年月日時分秒
ctime t = ctime::getcurrenttime();
int d=t.getday(); //獲得幾號
int y=t.getyear(); //獲取年份
int m=t.getmonth(); //獲取當前月份
int h=t.gethour(); //獲取當前為幾時
int mm=t.getminute(); //獲取分鐘
int s=t.getsecond(); //獲取秒
int w=t.getdayofweek(); //獲取星期幾,注意1為星期天,7為星期六
b,計算兩段時間的差值,可以使用ctimespan類,具體使用方法如下:
ctime t1( 1999, 3, 19, 22, 15, 0 );
ctime t = ctime::getcurrenttime();
ctimespan span=t-t1; //計算當前系統時間與時間t1的間隔
int iday=span.getdays(); //獲取這段時間間隔共有多少天
int ihour=span.gettotalhours(); //獲取總共有多少小時
int imin=span.gettotalminutes();//獲取總共有多少分鐘
int isec=span.gettotalseconds();//獲取總共有多少秒
c,獲得當前日期和時間,並可以轉化為cstring
ctime tm=ctime::getcurrenttime(); cstring str=tm.format("%y-%m-%d");//顯示年月日
2.使用getlocaltime:windows api 函式,獲取當地的當前系統日期和時間 (精確到毫秒)
此函式會把獲取的系統時間資訊儲存到systemtime結構體裡邊
typedef struct _systemtime
systemtime,*psystemtime; 例:
systemtime st;
cstring strdate,strtime;
getlocaltime(&st);
strdate.format("%4d-%2d-%2d",st.wyear,st.wmonth,st.wday);
strtime.format("%2d:%2d:%2d",st.whour,st.wminute,st.wsecond) ;
afxmessagebox(strdate);
afxmessagebox(strtime);
3.使用gettickcount:從作業系統啟動到現在所經過(elapsed)的毫秒數,它的返回值是dword。(精確到毫秒)
//獲取程式執行時間
long t1=gettickcount();//
程式段開始前取得系統執行時間(ms)
sleep(500);
long t2=gettickcount();();//
程式段結束後取得系統執行時間(ms)
str.format("time:%dms",t2-t1);//
前後之差即 程式執行時間
afxmessagebox(str); //
獲取系統執行時間
long t=gettickcount();
cstring str,str1;
str1.format("
系統已執行 %d時",t/3600000);
str=str1;
t%=3600000;
str1.format("%d
分",t/60000);
str+=str1;
t%=60000;
str1.format("%d
秒",t/1000);
str+=str1;
afxmessagebox(str);
4.使用time_t time( time_t * timer ) : 僅使用c標準庫(精確到秒)
得到從標準計時點(一般是2023年1月1日午夜)到當前時間的秒數
計算時間差:double difftime( time_t timer1, time_t timer0)
struct tm *localtime(const time_t *timer); 取得當地時間,localtime獲取的結果由結構tm返回
返回的字串可以依下列的格式而定:
%a 星期幾的縮寫。eg:tue
%a 星期幾的全名。 eg: tuesday
%b 月份名稱的縮寫。
%b 月份名稱的全名。
%c 本地端日期時間較佳表示字串。
%d 用數字表示本月的第幾天 (範圍為 00 至 31)。日期
%h 用 24 小時制數字表示小時數 (範圍為 00 至 23)。
%i 用 12 小時制數字表示小時數 (範圍為 01 至 12)。
%j 以數字表示當年度的第幾天 (範圍為 001 至 366)。
%m 月份的數字 (範圍由 1 至 12)。
%m 分鐘。
%p 以 ''am'' 或 ''pm'' 表示本地端時間。
%s 秒數。
%u 數字表示為本年度的第幾周,第乙個星期由第乙個週日開始。
%w 數字表示為本年度的第幾周,第乙個星期由第乙個周一開始。
%w 用數字表示本週的第幾天 ( 0 為週日)。
%x 不含時間的日期表示法。
%x 不含日期的時間表示法。 eg: 15:26:30
%y 二位數字表示年份 (範圍由 00 至 99)。
%y 完整的年份數字表示,即四位數。 eg:2008
%z(%z)
時區或名稱縮寫。eg:中國標準時間
%% %
字元。 5.
要獲取高精度時間,可以使用
bool queryperformancefrequency(large_integer *lpfrequency)獲取系統的計數器的頻率
bool queryperformancecounter(large_integer *lpperformancecount)獲取計數器的值
然後用兩次計數器的差除以frequency就得到時間。
6. ********** timer functions
the following functions are used with ********** timers.
timebeginperiod/timeendperiod/timegetdevcaps/timegetsystemtime
timegettime/timekillevent/timeproc/timesetevent 精度很高q:
gettickcount()
函式,說是毫秒記數,是真的嗎,還是精確到55毫秒? a:
gettickcount()
和getcurrenttime()都只精確到55ms(1個tick就是55ms)。如果要精確到毫秒,應該使用timegettime函式或queryperformancecounter函式。具體例子可以參考qa001022 "vc++中使用高精度定時器"、qa001813 "如何在windows實現準確的定時"和qa004842 "timegettime函式延時不准"。 q:
vc++
怎樣獲取系統時間,返回值是什麼型別的變數呢?a:
getsystemtime
返回的是格林威志標準時間
void getsystemtime(
lpsystemtime lpsystemtime // address of system time structure );
函式就可以獲得了,其中lpsystemtime 是個結構體
VC獲取系統時間 程式執行時間
1.使用ctime類 cstring str 獲取系統時間 ctime tm tm ctime getcurrenttime str tm.format 現在時間是 y年 m月 d日 x messagebox str,null,mb ok 2 得到系統時間日期 使用getlocaltime syst...
VC獲取系統時間 程式執行時間
1.使用ctime類 cstring str 獲取系統時間 ctime tm tm ctime getcurrenttime str tm.format 現在時間是 y年 m月 d日 x messagebox str,null,mb ok 2 得到系統時間日期 使用getlocaltime syst...
VC 獲取程式執行時間和系統執行時間
cstring str,str1 獲取程式執行時間 long t1 gettickcount 程式段開始前取得系統執行時間 ms sleep 500 afxmessagebox do something.long t2 gettickcount 程式段結束後取得系統執行時間 ms str.forma...