<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
程式碼
#define _CRT_SECURE_NO_WARNINGS //VS中必須定義,否則報錯 #include<ctime> #include<stdio.h> int main() { time_t nowtime; time(&nowtime); //獲取1900年1月1日0點0分0秒到現在經過的秒數 tm* p = localtime(&nowtime); //將秒數轉換為本地時間,年從1900算起,需要+1900,月為0-11,所以要+1 printf("%04d:%02d:%02d %02d:%02d:%02dn", p->tm_year + 1900, p->tm_mon + 1, p->tm_mday,p->tm_hour,p->tm_min,p->tm_sec); }
結果:
或者使用安全函數則不需要定義宏
#include<ctime> #include<stdio.h> int main() { time_t nowtime; time(&nowtime); //獲取1900年1月1日0點0分0秒到現在經過的秒數 tm p; localtime_s(&p,&nowtime); //將秒數轉換為本地時間,年從1900算起,需要+1900,月為0-11,所以要+1 printf("%04d:%02d:%02d %02d:%02d:%02dn", p.tm_year + 1900, p.tm_mon + 1, p.tm_mday,p.tm_hour,p.tm_min,p.tm_sec); }
結果:
程式碼:
#include<atltime.h> #include<stdio.h> int main() { CTime time=CTime::GetCurrentTime(); printf("%04d/%02d/%02d %02d:%02d:%02dn",time.GetYear(),time.GetMonth(),time.GetDay(),time.GetHour(),time.GetMinute(),time.GetSecond()); }
結果
程式碼:
#include<Windows.h> #include<stdio.h> int main() { SYSTEMTIME time; GetLocalTime(&time); printf("%04d/%02d/%02d %02d:%02d:%02dn", time.wYear, time.wMonth, time.wDay, time.wHour, time.wMinute, time.wSecond); }
結果:
函數原型:
time_t time( time_t* _Time //儲存時間的引數 )
可以看到,該函數只需要一個名為time_t的引數
#define long long time_t
從原始碼可以看到,time_t實則是long long 型別的別名
該函數的作用就是將1900年1月1日0點0分0秒到當前所經過的秒數放在該引數中
所以想要得到我們想要的年月日時分秒常見格式,還需要將該結果轉換一下
函數原型
tm* localtime( time_t* _Time )
該函數的作用就是將秒數轉化為對應的年月日,時分秒
需要的引數正是time函數返回的結果,轉化後的結果為tm結構體.就可以通過tm變數獲取想要的內容
注意: 如果是在VS環境下,使用該函數會報錯,必須定義宏_CRT_SECURE_NO_WARNINGS在最前面
#define _CRT_SECURE_NO_WARNINGS
原始碼(中文為我的備註,可能理解有偏差,建議參照英文):
struct tm { int tm_sec; // seconds after the minute - [0, 60] including leap second //一分鐘的第幾秒,從0開始計數 int tm_min; // minutes after the hour - [0, 59] //一小時的第幾分種,從0開始計數 int tm_hour; // hours since midnight - [0, 23] //一天的第幾個小時,從0開始計數 int tm_mday; // day of the month - [1, 31] //一個月的第幾天,從1開始計數 int tm_mon; // months since January - [0, 11] //一年的第幾個月,從0開始計數,即0代表1月,1代表2月 int tm_year; // years since 1900 //從1900年到現在經過的年分 int tm_wday; // days since Sunday - [0, 6] //一個星期的第幾天,從0開始計數,即0代表星期一,依次類推 int tm_yday; // days since January 1 - [0, 365] //一年的第幾天,從0計數,0代表第一天,依次類推 int tm_isdst; // daylight savings time flag //夏令時標誌 };
該函數為對應的安全函數,不用定義宏就可以使用
errno_t localtime_s( tm* _Tm, time_t * _Time )
可以看到,該安全函數需要兩個引數,一個是tm,相當於localtime函數的返回值,另一個是time_t,就是time函數得到的結果
該類是ATL(Active Template Library)模板庫提供的,是微軟提供的,在安裝了VS(Visual studio)之後,並安裝了C++開發環境,就能正常使用
該類提供了一個靜態成員函數,GetCurrentTime,可以獲取當前時間並把結果通過CTime類返回
得到結果後,可通過其成員函數得到想要的內容,比直接使用C語言庫函數方便很多
該函數為WIn API函數,是windows提供的一個獲取時間的介面,精確度可達到毫秒
函數原型:
VOID WINAPI GetLocalTime( LPSYSTEMTIME lpSystemTime );
可以看到,該函數只需要一個SYSTEMTIME結構體的指標,將獲取到的時間儲存到該結構體中,通過該結構體就可以獲得想要的內容
結構體原型:
typedef struct _SYSTEMTIME { WORD wYear; //年 WORD wMonth; //月 WORD wDayOfWeek; //一週的第幾天,0為週日,1為週一 WORD wDay; //日 WORD wHour; //時 WORD wMinute; //分 WORD wSecond; //秒 WORD wMilliseconds; //毫秒 } SYSTEMTIME, *PSYSTEMTIME, *LPSYSTEMTIME;
到此這篇關於C/C++獲取當前時間的方法總結(最全)的文章就介紹到這了,更多相關C++獲取當前時間內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45