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

C++獲取本地時間常見方法匯總

 更新時間:2020年08月31日 10:38:40   作者:Dabelv  
這篇文章主要介紹了C++獲取本地時間的常見方法,幫助大家更好的理解和學(xué)習(xí)C++,感興趣的朋友可以了解下

1.跨平臺方法

1.1方法一:手動暴力法

#include <iostream>
using namespace std;
#include <time.h>

time_t t = time(NULL);
struct tm* stime=localtime(&t);
char tmp[32]={NULL};
sprintf(tmp, "%04d-%02d-%02d %02d:%02d:%02d",1900+stime->tm_year,1+stime->tm_mon,stime->tm_mday, stime->tm_hour,stime->tm_min,stime->tm_sec);
cout<<tmp<<endl;

輸出結(jié)果:

2015-04-02 23:12:56

1.2方法二:投機取巧法

#include <iostream>
using namespace std;
#include <time.h>

time_t t = time(0); 
char tmp[32]={NULL};
strftime(tmp, sizeof(tmp), "%Y-%m-%d %H:%M:%S",localtime(&t)); 
cout<<tmp<<endl;

輸出結(jié)果:

2015-04-02 23:12:56

1.3方法三:簡獲日歷時間法

#include <iostream>
using namespace std;
#include <time.h>
#include <string>

time_t tm;
time(&tm);
char tmp[128]={NULL};
strcpy(tmp,ctime(&tm));
//或者
//struct tm* stime=localtime(&tm);
//strcpy(tmp,asctime(stime));
cout<<tmp<<endl;

輸出結(jié)果:

Fri Aug 14 23:19:42 2015

2.Windows平臺獲取時間

#include <iostream>
using namespace std;
#include <time.h>
#include <windows.h>

SYSTEMTIME sys; 
GetLocalTime(&sys);
char tmp[64]={NULL};
sprintf(tmp,"%4d-%02d-%02d %02d:%02d:%02d ms:%03d",sys.wYear,sys.wMonth,sys.wDay,sys.wHour,sys.wMinute,sys.wSecond,sys.wMilliseconds); 
cout<<tmp<<endl;

輸出結(jié)果:

2015-08-14 23:41:56 ms:354

3.Unix平臺獲取時間

#include <sys/time.h> 
#include <unistd.h>

struct timeval now_time;
gettimeofday(&now_time, NULL);
time_t tt = now_time.tv_sec;
tm *temp = localtime(&tt);
char time_str[32]={NULL};
sprintf(time_str,"%04d-%02d-%02d%02d:%02d:%02d",temp->tm_year+ 1900,temp->tm_mon+1,temp->tm_mday,temp->tm_hour,temp->tm_min, temp->tm_sec);
cout<<tmp<<endl;

輸出時間:

2015-08-14 23:41:56

4.需知知識點

(1)UTC (Coordinated Universal Time):協(xié)調(diào)世界時,又稱世界標(biāo)準時間。曾由格林威治平均時間(Greenwich Mean Time,GMT)提供,現(xiàn)在由原子鐘提供。比如,中國內(nèi)地的時間與UTC的時差為+8,也就是UTC+8。美國是UTC-5。

(2)Calendar Time:日歷時間,是用“從一個標(biāo)準時間點到此時的時間經(jīng)過的秒數(shù)”來表示的時間,由time()函數(shù)獲取。這個標(biāo)準時間點對不同的編譯器來說會有所不同,但對一個編譯系統(tǒng)來說,這個標(biāo)準時間點是不變的,該編譯系統(tǒng)中的時間對應(yīng)的日歷時間都通過該標(biāo)準時間點來衡量,所以可以說日歷時間是“相對時間”,但是無論你在哪一個時區(qū),在同一時刻對同一個標(biāo)準時間點來說,日歷時間都是一樣的。

(3)Epoch指的是一個特定的時間點:1970-01-01 00:00:00 UTC,即Unix 時間戳。

(4)clock tick:時鐘計時單元(而不把它叫做時鐘滴答次數(shù)),一個時鐘計時單元的時間長短是由CPU控制的。一個clock tick不是CPU的一個時鐘周期,而是C/C++的一個基本計時單位。
在VC++的time.h文件中,我們可以找到相關(guān)的定義:

#ifndef _CLOCK_T_DEFINED
typedef long clock_t;
#define _CLOCK_T_DEFINED
#endif

#define CLOCKS_PER_SEC ((clock_t)1000)

clock_t clock( void );

這個函數(shù)返回從“開啟這個程序進程”到“程序中調(diào)用clock()函數(shù)”時之間的CPU時鐘計
時單元(clock tick)數(shù),在MSDN中稱之為掛鐘時間(wal-clock)。

//獲取逝去時間
clock_t start, finish;
start=clock();
…
finish=clock();

//逝去多少秒
long duration=(finish- start)/ CLOCKS_PER_SEC;

(5) time.h還提供了兩種不同的函數(shù)將日歷時間(一個用time_t表示的整數(shù))轉(zhuǎn)換為我們平時看到的年月日時分秒分開顯示的時間格式tm:

struct tm * gmtime(const time_t *timer);
struct tm * localtime(const time_t * timer);

其中g(shù)mtime()函數(shù)是將日歷時間轉(zhuǎn)化為世界標(biāo)準時間(即格林尼治時間),并返回一個tm結(jié)構(gòu)體來保存這個時間,而localtime()函數(shù)是將日歷時間轉(zhuǎn)化為本地時間。比如現(xiàn)在用gmtime()函數(shù)獲得的世界標(biāo)準時間是2005年7月30日7點18分20秒,那么我用localtime()函數(shù)在中國地區(qū)獲得的本地時間會比世界標(biāo)準時間晚8個小時。

(6)分解時間就是以年、月、日、時、分、秒等分量保存的時間結(jié)構(gòu),在C/C++中是tm結(jié)構(gòu)。我們可以使用mktime()函數(shù)將用tm結(jié)構(gòu)表示的時間轉(zhuǎn)化為日歷時間。其函數(shù)原型如下:

time_t mktime(struct tm * timeptr);

該函數(shù)與gmtime和localtime函數(shù)具有相反的作用。

以上就是C++獲取本地時間常見方法匯總的詳細內(nèi)容,更多關(guān)于C++ 獲取本地時間的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • C++17中的std::optional的具體使用

    C++17中的std::optional的具體使用

    這篇文章主要介紹了C++17中的std::optional的具體使用,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-01-01
  • c++ vector 常用函數(shù)示例解析

    c++ vector 常用函數(shù)示例解析

    這篇文章主要介紹了c++ vector 常用函數(shù)示例解析,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07
  • C語言的模板與泛型編程你了解嗎

    C語言的模板與泛型編程你了解嗎

    這篇文章主要為大家詳細介紹了C語言的模板與泛型編程,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-03-03
  • 示例詳解C++語言中的命名空間 (namespace)

    示例詳解C++語言中的命名空間 (namespace)

    C++名字空間是一種描述邏輯分組的機制,也就是說,如果有一些聲明按照某種準則在邏輯上屬于同一個模塊,就可以將它們放在同一個名字空間,以表明這個事實,這篇文章主要給大家介紹了關(guān)于C++語言中命名空間 (namespace)的相關(guān)資料,需要的朋友可以參考下
    2021-08-08
  • C語言詳細分析宏定義的使用

    C語言詳細分析宏定義的使用

    宏定義是用宏名來表示一個字符串,在宏展開時又以該字符串取代宏名,這只是一種簡單的替換。字符串中可以含任何字符,可以是常數(shù),也可以是表達式,預(yù)處理程序?qū)λ蛔魅魏螜z查,如有錯誤,只能在編譯已被宏展開后的源程序時發(fā)現(xiàn)
    2022-04-04
  • C/C++合并兩個升序鏈表的方式

    C/C++合并兩個升序鏈表的方式

    這篇文章主要介紹了C/C++合并兩個升序鏈表的方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-07-07
  • C++深淺拷貝和string類的兩種寫法詳解

    C++深淺拷貝和string類的兩種寫法詳解

    這篇文章主要為大家詳細介紹了C++深淺拷貝和string類的兩種寫法,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-03-03
  • 詳解C++ 中的臨時對象

    詳解C++ 中的臨時對象

    這篇文章主要介紹了C++ 中的臨時對象的相關(guān)資料,幫助大家更好的理解和學(xué)習(xí)c++,感興趣的朋友可以了解下
    2020-08-08
  • C++中volatile關(guān)鍵字的使用詳解以及常見的誤解

    C++中volatile關(guān)鍵字的使用詳解以及常見的誤解

    volatile 關(guān)鍵字是一種類型修飾符,用它聲明的類型變量表示可以被某些編譯器未知的因素更改,比如:操作系統(tǒng),硬件或者其他線程等
    2020-01-01
  • C語言標(biāo)準庫<math.h>和<setjmp.h>的實現(xiàn)

    C語言標(biāo)準庫<math.h>和<setjmp.h>的實現(xiàn)

    本文主要介紹了C語言標(biāo)準庫<math.h>和<setjmp.h>的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-11-11

最新評論

安丘市| 和静县| 平果县| 定州市| 西盟| 固阳县| 玛纳斯县| 甘洛县| 化州市| 西昌市| 兴城市| 沁源县| 乐至县| 新乡县| 祁连县| 休宁县| 建平县| 新巴尔虎右旗| 当雄县| 竹山县| 广宗县| 勐海县| 子洲县| 上饶县| 社会| 延川县| 根河市| 安徽省| 黔江区| 始兴县| 星子县| 洪雅县| 玉田县| 荆州市| 大厂| 鹤壁市| 伊宁市| 福海县| 林州市| 双江| 微山县|