c 如何獲取系統時間

2021-05-24 14:39:31 字數 3387 閱讀 1171

c++如何獲取系統時間

//方案— 優點:僅使用c標準庫;缺點:只能精確到秒級 

#include

#include

int main( void ) 

size_t strftime(char *strdest, size_t maxsize, const char *format, const struct tm *timeptr); 

根據格式字串生成字串。 

struct tm *localtime(const time_t *timer); 

取得當地時間,localtime獲取的結果由結構tm返回 

返回的字串可以依下列的格式而定: 

%a 星期幾的縮寫。eg:tue 

%a 星期幾的全名。 eg: tuesday 

%b 月份名稱的縮寫。 

%b 月份名稱的全名。 

%c 本地端日期時間較佳表示字串。 

%d 用數字表示本月的第幾天 (範圍為 00 至 31)。日期 

%h 用 24 小時制數字表示小時數 (範圍為 00 至 23)。 

%i 用 12 小時制數字表示小時數 (範圍為 01 至 12)。 

%j 以數字表示當年度的第幾天 (範圍為 001 至 366)。 

%m 月份的數字 (範圍由 1 至 12)。 

%m 分鐘。 

%p 以 ''am'' 或 ''pm'' 表示本地端時間。 

%s 秒數。 

%u 數字表示為本年度的第幾周,第乙個星期由第乙個週日開始。 

%w 數字表示為本年度的第幾周,第乙個星期由第乙個周一開始。 

%w 用數字表示本週的第幾天 ( 0 為週日)。 

%x 不含時間的日期表示法。 

%x 不含日期的時間表示法。 eg: 15:26:30 

%y 二位數字表示年份 (範圍由 00 至 99)。 

%y 完整的年份數字表示,即四位數。 eg:2008 

%z(%z) 時區或名稱縮寫。eg:中國標準時間 

%% % 字元。 

//方案二 優點:能精確到毫秒級;缺點:使用了windows api 

#include

#include

int main( void ) 

//方案三,優點:利用系統函式,還能修改系統時間 

//此檔案必須是c++檔案 

#include

#include

using namespace std; 

void main() 

//方案四,將當前時間折算為秒級,再通過相應的時間換算即可 

//此檔案必須是c++檔案 

#include

#include<ctime

using namespace std; 

int main() 

2,時間的儲存,通過預定義的兩種結構來儲存:

1,日曆時間(calendar time)是通過time_t資料型別來表示的,用time_t表示的時間(日曆時間)是從乙個時間點(例如:2023年1月1日0時0分0秒)到此時的秒數。在time.h中,我們也可以看到time_t是乙個長整型數:

#ifndef _time_t_defined

typedef long time_t;

/* 時間值 */

#define _time_t_defined

/* 避免重複定義 time_t */

#endif

2,在標準c/c++中,我們可通過tm結構來獲得日期和時間,tm結構在time.h中的定義如下:

struct tm ;

3,時間的顯示:

time.h 標頭檔案中提供了asctime()函式(引數為tm結構指標)和ctime()函式(引數為time_t結構)將時間以固定的格式顯示出來,兩者的返回值都是char*型的字串。返回的時間格式為:星期幾 月份 日期 時:分:秒 年/n/0;time.h還提供了兩種不同的函式將日曆時間(乙個用time_t表示的整數)轉換為我們平時看到的把年月日時分秒分開顯示的時間格式 tm:

struct tm * gmtime(const time_t *timer);

gmtime()函式是將日曆時間轉化為世界標準時間(即格林尼治時間),並返回乙個tm結構體來儲存這個時間

struct tm * localtime(const time_t * timer);localtime()函式是將日曆時間轉化為本地時間

#include

#include

#include

#include

int main(void)

4,時間差的計算:

所用函式:c/

clock_t clock( void );函式返回從「開啟這個程式程序」到「程式中呼叫clock()函式」時之間的cpu時鐘計時單元(clock tick)數,clock_t是乙個長整形數,儲存時間的資料型別。在time.h檔案中,還定義了乙個常量clocks_per_sec,它用來表示一 秒鐘會有多少個時鐘計時單元,其定義如下:

#define clocks_per_sec ((clock_t)1000)

每 過千分之一秒(1毫秒),呼叫clock()函式返回的值就加1,時鐘計時單元的長度為1毫秒,那麼計時的精度也為1毫秒,那麼我們可不可以通過改變 clocks_per_sec的定義,通過把它定義的大一些,從而使計時精度更高呢?這樣是不行的。在標準c/c++中,最小的計時單位是一毫秒。 double difftime(time_t time1, time_t time0);這個函式來計算時間差。

#include "stdafx.h"

#include "time.h"

#include "stdio.h"

#include "stdlib.h"

int main(void)

5,時間的其他用途

用作隨機數的種子,由於時間獲得的實際上是乙個double型別的長整數,通過time(null)函式獲得,作為srand(time(null))的種子產生隨機數比較好。

#include "stdafx.h"

#include "time.h"

#include "stdio.h"

#include "stdlib.h"

int main(void)

system("pause");

return 0;

C 如何獲取系統時間

方案 優點 僅使用c標準庫 缺點 只能精確到秒級 include include int main void size t strftime char strdest,size t maxsize,const char format,const struct tm timeptr 根據格式字串生成字...

C 系統時間獲取

在c 中想要獲取當前系統的時候可以使用函式 time t time time t timer 使用這個函式如果傳入的 引數不是null 那麼,它就會把當前系統的時間設定到這個指標當中 這個函式返回的 數字是 從 00 00 hours,jan 1,1970 utc 的 秒 struct tm loc...

c 獲取系統時間

方案 優點 僅使用c標準庫 缺點 只能精確到秒級 include include int main void size t strftime char strdest,size t maxsize,const char format,const struct tm timeptr 根據格式字串生成字...