Windows下C/C++获取当前系统时间
Windows下C/C++獲取當前系統時間
【原文】http://blog.csdn.NET/dadalan/article/details/5771693
寫軟件時經常要用到獲取系統時間顯示到狀態欄,這里在前人的基礎上總結了一下幾種方案。
方案一:localtime()
優點:僅使用C標準庫;缺點:只能精確到秒級
time_t是定義在time.h中的一個類型,表示一個日歷時間,也就是從1970年1月1日0時0分0秒到此時的秒數,原型是:
?typedef long time_t;??????? /* time value */
可以看出time_t其實是一個長整型,由于長整型能表示的數值有限,因此它能表示的最遲時間是2038年1月18日19時14分07秒。
函數time可以獲取當前日歷時間時間,time的定義:
?time_t time(time_t *)
time_t (typedef __int64 ?time_t )只是一個長整型,不符合我們的使用習慣,需要轉換成本地時間,就要用到tm結構,time.h中結構tm的原型是:
可以看出,這個機構定義了年、月、日、時、分、秒、星期、當年中的某一天、夏令時。可以用這個結構很方便的顯示時間。
用localtime獲取當前系統時間,該函數將一個time_t時間轉換成tm結構表示的時間,函數原型:
?struct tm * localtime(const time_t *)
使用gmtime函數獲取格林尼治時間,函數原型:
?struct tm * gmtime(const time_t *)
輸出方式2: [cpp] view plaincopy
C/C++在time.h中提供了一個自定義時間格式的函數strftime,函數原型:
?size_t strftime(char *strDest, size_t maxsize, const char *format, const struct tm *timeptr);
參數說明:
?char *strDest:用來存放格式化后的字符串緩存,
?size_t maxsize:指定最多可以輸出的字符數,
?const char *format:格式化字符串,
?const struct tm *timeptr:要轉換的時間。
可使用的格式化字符串:
%a 星期幾的簡寫?
%A 星期幾的全稱?
%b 月分的簡寫?
%B 月份的全稱?
%c 標準的日期的時間串?
%C 年份的后兩位數字?
%d 十進制表示的每月的第幾天?
%D 月/天/年?
%e 在兩字符域中,十進制表示的每月的第幾天?
%F 年-月-日?
%g 年份的后兩位數字,使用基于周的年?
%G 年分,使用基于周的年?
%h 簡寫的月份名?
%H 24小時制的小時?
%I 12小時制的小時
%j 十進制表示的每年的第幾天?
%m 十進制表示的月份?
%M 十時制表示的分鐘數?
%n 新行符?
%p 本地的AM或PM的等價顯示?
%r 12小時的時間?
%R 顯示小時和分鐘:hh:mm?
%S 十進制的秒數?
%t 水平制表符?
%T 顯示時分秒:hh:mm:ss?
%u 每周的第幾天,星期一為第一天 (值從0到6,星期一為0)
%U 第年的第幾周,把星期日做為第一天(值從0到53)
%V 每年的第幾周,使用基于周的年?
%w 十進制表示的星期幾(值從0到6,星期天為0)
%W 每年的第幾周,把星期一做為第一天(值從0到53)?
%x 標準的日期串?
%X 標準的時間串?
%y 不帶世紀的十進制年份(值從0到99)
%Y 帶世紀部分的十進制年份?
%z,%Z 時區名稱,如果不能得到時區名稱則返回空字符。
%% 百分號
方案二:GetLocalTime( &sys );?
優點:能精確到毫秒級;缺點:使用了windows API?
[cpp] view plaincopy
方案三:system("time");
優點:利用系統函數,還能修改系統時間[cpp] view plaincopy
方案四:time(null)
將當前時間折算為秒級,再通過相應的時間換算即可[cpp] view plaincopy
方案五:CTime
使用MFC里面的CTime類,更加方便第一種: [cpp] view plaincopy
第二種: [cpp] view plaincopy
注釋:
如何在C++中將filetime時間轉化為字符串?
先
filetime
轉化為systemtime再
SYSTEMTIME?st;?
char strTime[128];
sprintf(strTime,"%d-%d-%d? %d:%d:%d",st.wYear,st.wMonth,st.wDay,st.wHour,st.wMinute,st.wSecond); ?
參考:
如何在C++中將filetime時間轉化為常規時間格式?
http://bbs.csdn.net/topics/310015002總結
以上是生活随笔為你收集整理的Windows下C/C++获取当前系统时间的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux下用c语言写黄金矿工,C语言写
- 下一篇: s3c2440移植MQTT