最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C/C++獲取當(dāng)前時(shí)間的方法總結(jié)(最全)

 更新時(shí)間:2023年03月17日 16:37:32   作者:余識(shí)-  
這篇文章主要為大家整理了C/C++中獲取當(dāng)前時(shí)間的最全方法,文中的示例代碼講解詳細(xì),具有一定的學(xué)習(xí)和借鑒價(jià)值,需要的可以了解一下

一、獲取當(dāng)前時(shí)間

1.使用C語言標(biāo)準(zhǔn)庫

代碼

#define _CRT_SECURE_NO_WARNINGS //VS中必須定義,否則報(bào)錯(cuò)
#include<ctime>
#include<stdio.h>
int main()
{
	time_t nowtime;
	time(&nowtime); //獲取1900年1月1日0點(diǎn)0分0秒到現(xiàn)在經(jīng)過的秒數(shù)
	tm* p = localtime(&nowtime); //將秒數(shù)轉(zhuǎn)換為本地時(shí)間,年從1900算起,需要+1900,月為0-11,所以要+1
	printf("%04d:%02d:%02d %02d:%02d:%02d\n", p->tm_year + 1900, p->tm_mon + 1, p->tm_mday,p->tm_hour,p->tm_min,p->tm_sec);
}

結(jié)果:

或者使用安全函數(shù)則不需要定義宏

#include<ctime>
#include<stdio.h>
int main()
{
	time_t nowtime;
	time(&nowtime); //獲取1900年1月1日0點(diǎn)0分0秒到現(xiàn)在經(jīng)過的秒數(shù)
	tm p;
	localtime_s(&p,&nowtime); //將秒數(shù)轉(zhuǎn)換為本地時(shí)間,年從1900算起,需要+1900,月為0-11,所以要+1
	printf("%04d:%02d:%02d %02d:%02d:%02d\n", p.tm_year + 1900, p.tm_mon + 1, p.tm_mday,p.tm_hour,p.tm_min,p.tm_sec);
}

結(jié)果:

2.使用VS提供的ATL模板庫

代碼:

#include<atltime.h>
#include<stdio.h>
int main()
{
	CTime time=CTime::GetCurrentTime();
	printf("%04d/%02d/%02d %02d:%02d:%02d\n",time.GetYear(),time.GetMonth(),time.GetDay(),time.GetHour(),time.GetMinute(),time.GetSecond());
}

結(jié)果

3.使用Win API

代碼:

#include<Windows.h>
#include<stdio.h>
int main()
{
	SYSTEMTIME time;
	GetLocalTime(&time);
	printf("%04d/%02d/%02d %02d:%02d:%02d\n", time.wYear, time.wMonth, time.wDay, time.wHour, time.wMinute, time.wSecond);
}

結(jié)果:

二、代碼解析

1.time函數(shù)

函數(shù)原型:

time_t time(
time_t* _Time //保存時(shí)間的參數(shù)
)

可以看到,該函數(shù)只需要一個(gè)名為time_t的參數(shù)

#define long long time_t

從源代碼可以看到,time_t實(shí)則是long long 類型的別名

該函數(shù)的作用就是將1900年1月1日0點(diǎn)0分0秒到當(dāng)前所經(jīng)過的秒數(shù)放在該參數(shù)中

所以想要得到我們想要的年月日時(shí)分秒常見格式,還需要將該結(jié)果轉(zhuǎn)換一下

2.localtime函數(shù)

函數(shù)原型

tm* localtime(
time_t* _Time 
)

該函數(shù)的作用就是將秒數(shù)轉(zhuǎn)化為對(duì)應(yīng)的年月日,時(shí)分秒

需要的參數(shù)正是time函數(shù)返回的結(jié)果,轉(zhuǎn)化后的結(jié)果為tm結(jié)構(gòu)體.就可以通過tm變量獲取想要的內(nèi)容

注意: 如果是在VS環(huán)境下,使用該函數(shù)會(huì)報(bào)錯(cuò),必須定義宏_CRT_SECURE_NO_WARNINGS在最前面

#define _CRT_SECURE_NO_WARNINGS

3.tm結(jié)構(gòu)體

源代碼(中文為我的備注,可能理解有偏差,建議參照英文):

struct tm
{
    int tm_sec;   // seconds after the minute - [0, 60] including leap second //一分鐘的第幾秒,從0開始計(jì)數(shù)
    int tm_min;   // minutes after the hour - [0, 59] //一小時(shí)的第幾分種,從0開始計(jì)數(shù)
    int tm_hour;  // hours since midnight - [0, 23] //一天的第幾個(gè)小時(shí),從0開始計(jì)數(shù)
    int tm_mday;  // day of the month - [1, 31] //一個(gè)月的第幾天,從1開始計(jì)數(shù)
    int tm_mon;   // months since January - [0, 11] //一年的第幾個(gè)月,從0開始計(jì)數(shù),即0代表1月,1代表2月
    int tm_year;  // years since 1900 //從1900年到現(xiàn)在經(jīng)過的年分
    int tm_wday;  // days since Sunday - [0, 6] //一個(gè)星期的第幾天,從0開始計(jì)數(shù),即0代表星期一,依次類推
    int tm_yday;  // days since January 1 - [0, 365] //一年的第幾天,從0計(jì)數(shù),0代表第一天,依次類推
    int tm_isdst; // daylight savings time flag //夏令時(shí)標(biāo)志
};

4.localtime_s函數(shù)

該函數(shù)為對(duì)應(yīng)的安全函數(shù),不用定義宏就可以使用

errno_t localtime_s(
tm*  _Tm,
time_t * _Time
)

可以看到,該安全函數(shù)需要兩個(gè)參數(shù),一個(gè)是tm,相當(dāng)于localtime函數(shù)的返回值,另一個(gè)是time_t,就是time函數(shù)得到的結(jié)果

5.CTime類

該類是ATL(Active Template Library)模板庫提供的,是微軟提供的,在安裝了VS(Visual studio)之后,并安裝了C++開發(fā)環(huán)境,就能正常使用

該類提供了一個(gè)靜態(tài)成員函數(shù),GetCurrentTime,可以獲取當(dāng)前時(shí)間并把結(jié)果通過CTime類返回

得到結(jié)果后,可通過其成員函數(shù)得到想要的內(nèi)容,比直接使用C語言庫函數(shù)方便很多

6.GetLocalTime函數(shù)

該函數(shù)為WIn API函數(shù),是windows提供的一個(gè)獲取時(shí)間的接口,精確度可達(dá)到毫秒

函數(shù)原型:

VOID WINAPI GetLocalTime(
LPSYSTEMTIME lpSystemTime
);

可以看到,該函數(shù)只需要一個(gè)SYSTEMTIME結(jié)構(gòu)體的指針,將獲取到的時(shí)間保存到該結(jié)構(gòu)體中,通過該結(jié)構(gòu)體就可以獲得想要的內(nèi)容

結(jié)構(gòu)體原型:

typedef struct _SYSTEMTIME {
  WORD wYear; //年
  WORD wMonth; //月
  WORD wDayOfWeek; //一周的第幾天,0為周日,1為周一
  WORD wDay;  //日 
  WORD wHour; //時(shí)
  WORD wMinute; //分
  WORD wSecond; //秒
  WORD wMilliseconds; //毫秒
} SYSTEMTIME, *PSYSTEMTIME, *LPSYSTEMTIME;

到此這篇關(guān)于C/C++獲取當(dāng)前時(shí)間的方法總結(jié)(最全)的文章就介紹到這了,更多相關(guān)C++獲取當(dāng)前時(shí)間內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • c++實(shí)現(xiàn)簡(jiǎn)單的線程池

    c++實(shí)現(xiàn)簡(jiǎn)單的線程池

    本文介紹的線程池采用C++語言,在windows平臺(tái)下實(shí)現(xiàn)。本著技術(shù)分享的精神寫作本文同時(shí)公布源代碼。歡迎大家指出該線程池存在的問題并對(duì)當(dāng)前性能進(jìn)行討論。
    2015-03-03
  • C++數(shù)據(jù)結(jié)構(gòu)哈希表詳解

    C++數(shù)據(jù)結(jié)構(gòu)哈希表詳解

    C++標(biāo)準(zhǔn)庫中使用的unordered_map底層實(shí)現(xiàn)是哈希表,下面這篇文章主要給大家介紹了關(guān)于C++中使用哈希表(unordered_map)的一些常用操作方法,需要的朋友可以參考下
    2022-07-07
  • 淺析C++編程當(dāng)中的線程

    淺析C++編程當(dāng)中的線程

    這篇文章主要介紹了淺析C++編程當(dāng)中的線程,線程在每一種編程語言中都是重中之重,需要的朋友可以參考下
    2015-07-07
  • C語言中const和define的區(qū)別你了解嘛

    C語言中const和define的區(qū)別你了解嘛

    這篇文章主要為大家詳細(xì)介紹了C語言中const和define的區(qū)別,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-03-03
  • C 語言基礎(chǔ)教程(我的C之旅開始了)[九]

    C 語言基礎(chǔ)教程(我的C之旅開始了)[九]

    C 語言基礎(chǔ)教程(我的C之旅開始了)[九]...
    2007-02-02
  • C++版本簡(jiǎn)易Flappy bird

    C++版本簡(jiǎn)易Flappy bird

    這篇文章主要介紹了C++版本簡(jiǎn)易Flappy bird的相關(guān)資料,需要的朋友可以參考下
    2015-03-03
  • 詳解C++中的菱形繼承問題

    詳解C++中的菱形繼承問題

    這篇文章主要介紹了詳解C++中的菱形繼承問題,在多繼承結(jié)構(gòu)中,存在著很多問題,比如從不同基類中繼承了同名成員,派生類中也定義了同名成員,這種二義性問題很好解決,加上要訪問的基類的類名限制就可以了,需要的朋友可以參考下
    2023-08-08
  • C語言中printf的兩種輸出對(duì)齊方式

    C語言中printf的兩種輸出對(duì)齊方式

    C語言中左對(duì)齊是C語言的默認(rèn)輸出方式,右對(duì)齊是一種特殊的輸出方式,左對(duì)齊和右對(duì)齊都對(duì)應(yīng)著一個(gè)已知的輸出寬度,輸出的字符串根據(jù)字符串的長(zhǎng)度在寬度上進(jìn)行補(bǔ)充,補(bǔ)充字符是空格,在使用printf函數(shù)輸出時(shí),需要在格式字符串中使用%-*s和%*s的格式來分別表示
    2024-02-02
  • C++ RTTI與4種類型轉(zhuǎn)換的深入理解

    C++ RTTI與4種類型轉(zhuǎn)換的深入理解

    這篇文章主要給大家介紹了關(guān)于C++ RTTI與4種類型轉(zhuǎn)換的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03
  • C語言求素?cái)?shù)的幾種方式總結(jié)

    C語言求素?cái)?shù)的幾種方式總結(jié)

    這篇文章主要介紹了C語言求素?cái)?shù)的幾種方式總結(jié),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-12-12

最新評(píng)論

万年县| 宁德市| 郸城县| 易门县| 淄博市| 溧阳市| 廊坊市| 吴旗县| 桓台县| 尚义县| 红原县| 中山市| 五莲县| 安溪县| 安国市| 江西省| 怀化市| 清新县| 井冈山市| 乌兰浩特市| 佛坪县| 陈巴尔虎旗| 海林市| 永嘉县| 天峨县| 依兰县| 老河口市| 蒲江县| 镇远县| 自治县| 张家港市| 乌兰察布市| 凤翔县| 沾益县| 慈利县| 海安县| 安徽省| 隆化县| 云林县| 南木林县| 兴义市|