Qt讀取本地系統(tǒng)時(shí)間的幾種方式小結(jié)
一,使用Windows API函數(shù)GetLocalTime(精確到毫秒)
typedef struct _SYSTEMTIME //SYSTEMTIME結(jié)構(gòu)體定義 { WORD wYear;//年 WORD wMonth;//月 WORD wDayOfWeek;//星期,0為星期日,1為星期一,2為星期二…… WORD wDay;//日 WORD wHour;//時(shí) WORD wMinute;//分 WORD wSecond;//秒 WORD wMilliseconds;//毫秒 } SYSTEMTIME,*PSYSTEMTIME;
SYSTEMTIME sys; GetLocalTime( &sys ); printf("%4d/%2d/%2d %2d:%2d:%2d.%3d\n", sys.wYear,sys.wMonth,sys.wDay,sys.wHour,sys.wMinute,sys.wSecond,sys.wMilliseconds); //輸出為“2024/3/16 10:13:23.234”
二,使用C語(yǔ)言函數(shù)localtime
1,使用asctime()進(jìn)行格式轉(zhuǎn)換
/*得到系統(tǒng)時(shí)間*/ time_t cur; struct daytime; cur = time((time_t*)NULL); time(&cur); /*時(shí)間轉(zhuǎn)換*/ daytime = *localtime(&cur); printf("%s", asctime(&daytime)); //輸出為“Wed Feb 13 15:46:11 2016”
2,使用strftime()進(jìn)行格式轉(zhuǎn)換
time_t t = time( 0 ); char tmp[64]; strftime( tmp, sizeof(tmp), "%Y/%m/%d %X %A 本年第%j天 %z",localtime(&t) ); printf("%s\n",tmp); //輸出為“2016/05/20 13:11:57 Friday 本年第141天 中國(guó)標(biāo)準(zhǔn)時(shí)間” 其中函數(shù)size_t strftime(char *strDest,size_t maxsize,const char *format,const struct tm *timeptr)
功能為根據(jù)format指向字符串中格式命令把timeptr中保存的時(shí)間信息放在strDest指向的字符串中,最多向strDest中存放maxsize個(gè)字符。該函數(shù)返回向strDest指向的字符串中放置的字符數(shù)。
format參數(shù)說(shuō)明:
%a 星期幾的簡(jiǎn)寫(xiě)
%A 星期幾的全稱
%b 月份的簡(jiǎn)寫(xiě)
%B 月份的全稱
%c 標(biāo)準(zhǔn)的日期的時(shí)間串
%C 年份的前兩位數(shù)字
%d 十進(jìn)制表示的每月的第幾天
%D 月/天/年
%e 在兩字符域中,十進(jìn)制表示的每月的第幾天
%F 年-月-日
%g 年份的后兩位數(shù)字,使用基于周的年
%G 年份,使用基于周的年
%h 簡(jiǎn)寫(xiě)的月份名
%H 24小時(shí)制的小時(shí)
%I 12小時(shí)制的小時(shí)
%j 十進(jìn)制表示的每年的第幾天
%m 十進(jìn)制表示的月份
%M 十時(shí)制表示的分鐘數(shù)
%n 新行符
%p 本地的AM或PM的等價(jià)顯示
%r 12小時(shí)的時(shí)間
%R 顯示小時(shí)和分鐘:hh:mm
%S 十進(jìn)制的秒數(shù)
%t 水平制表符
%T 顯示時(shí)分秒:hh:mm:ss
%u 每周的第幾天,星期一為第一天 (值從1到7,星期一為1)
%U 第年的第幾周,把星期日作為第一天(值從0到53)
%V 每年的第幾周,使用基于周的年
%w 十進(jìn)制表示的星期幾(值從0到6,星期天為0)
%W 每年的第幾周,把星期一做為第一天(值從0到53)
%x 標(biāo)準(zhǔn)的日期串
%X 標(biāo)準(zhǔn)的時(shí)間串
%y 不帶世紀(jì)的十進(jìn)制年份(值從0到99)
%Y 帶世紀(jì)部分的十制年份
%z,%Z 時(shí)區(qū)名稱,如果不能得到時(shí)區(qū)名稱則返回空字符。
%% 百分號(hào)
三,使用QDateTime獲取帶日期的時(shí)間
QDateTime current_date_time =QDateTime::currentDateTime();
QString current_date =current_date_time.toString("yyyy.MM.dd hh:mm:ss.zzz ddd");
yyyy表示年;MM表示月;dd表示日; hh表示小時(shí);mm表示分;ss表示秒;zzz表示毫秒;ddd表示周幾
connect(&time,SIGNAL(timeout()),this,SLOT(onTimeOut())); time.start(1000); void MainWindow::onTimeOut() { // 獲取系統(tǒng)當(dāng)前時(shí)間 QDateTime dateTime = QDateTime::currentDateTime(); sdateTimer = dateTime.toString("yyyy-MM-dd HH:mm:ss.zzz"); ui->label->setText(sdateTimer); // 顯示的內(nèi)容 ui->lcdNumber->display(sdateTimer); }
四,使用QTime獲取本地時(shí)間
QTime可以像QDateTime::toString那樣直接輸出固定格式的字符串。
QTime current_time =QTime::currentTime(); int hour = current_time.hour(); //當(dāng)前的小時(shí) int minute = current_time.minute(); //當(dāng)前的分 int second = current_time.second(); //當(dāng)前的秒 int msec = current_time.msec(); //當(dāng)前的毫秒
相關(guān)文章
C#實(shí)現(xiàn)軟件防破解和防調(diào)試的幾種有效措施
軟件保護(hù)在現(xiàn)代應(yīng)用程序開(kāi)發(fā)中變得越來(lái)越重要,尤其是在面對(duì)軟件盜版、調(diào)試和破解等問(wèn)題時(shí),在C#開(kāi)發(fā)中,雖然沒(méi)有完全防止破解的辦法,但通過(guò)采取一些有效的防護(hù)措施,可以顯著增加破解的難度并保護(hù)軟件的知識(shí)產(chǎn)權(quán),本篇文章將探討在C#中實(shí)現(xiàn)軟件防破解和防調(diào)試的幾種常見(jiàn)技術(shù)2025-03-03c#中實(shí)現(xiàn)圖片灰度化技術(shù)詳解
這篇文章主要介紹了c#中實(shí)現(xiàn)圖片灰度化技術(shù)詳解,本文給出計(jì)算公式和實(shí)現(xiàn)代碼以及圖片例子,需要的朋友可以參考下2014-08-08數(shù)字金額大寫(xiě)轉(zhuǎn)換器制作代碼分享(人民幣大寫(xiě)轉(zhuǎn)換)
一個(gè)人民幣大寫(xiě)的擴(kuò)展方法,可以做成數(shù)字金額大寫(xiě)轉(zhuǎn)換器,大家參考使用吧2013-12-12C#實(shí)現(xiàn)簡(jiǎn)單聊天程序的方法
這篇文章主要介紹了C#實(shí)現(xiàn)簡(jiǎn)單聊天程序的方法,實(shí)例分析了C#聊天程序的原理與客戶端、服務(wù)器端的實(shí)現(xiàn)技巧,需要的朋友可以參考下2015-06-06C#實(shí)現(xiàn)寫(xiě)入文本文件內(nèi)容的方法
這篇文章主要介紹了C#實(shí)現(xiàn)寫(xiě)入文本文件內(nèi)容的方法,涉及C#針對(duì)文本文件的判斷、創(chuàng)建及寫(xiě)入等相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-07-07