一、獲取日曆時間
time_t是定義在time.h中的乙個型別,表示乙個日曆時間,也就是從2023年1月1日0時0分0秒到此時的秒數,原型是:
typedef long time_t; /* time value */
可以看出time_t其實是乙個長整型,由於長整型能表示的數值有限,因此它能表示的最遲時間是2023年1月18日19時14分07秒。
函式time可以獲取當前日曆時間時間,time的定義:
time_t time(time_t *)
[cpp]view plain
copy
#include
#include
using
namespace
std;
intmain(
void
)
輸出結果:1268575163
二、獲取本地時間
time_t只是乙個長整型,不符合我們的使用習慣,需要轉換成本地時間,就要用到tm結構,time.h中結構tm的原型是:
struct tm ;
可以看出,這個機構定義了年、月、日、時、分、秒、星期、當年中的某一天、夏令時。可以用這個結構很方便的顯示時間。
用localtime獲取當前系統時間,該函式將乙個time_t時間轉換成tm結構表示的時間,函式原型:
struct tm * localtime(const time_t *)
使用gmtime函式獲取格林尼治時間,函式原型:
struct tm * gmtime(const time_t *)
為了方便顯示時間,定義了乙個函式void dsptime(const struct tm *);
[cpp]view plain
copy
#include
#include
using
namespace
std;
void
dsptime(
const
struct
tm*);
//輸出時間。
intmain(
void
)
void
dsptime(
const
struct
tm* ptm)
; cout << ptm->tm_year+1900 << "年"
<< ptm->tm_mon+1 <<
"月"<< ptm->tm_mday <<
"日 "
; cout << ptm->tm_hour << ":"
<< ptm->tm_min <<
":"<< ptm->tm_sec <<
" ";
cout << " 星期"
" 當年的第"
<< ptm->tm_yday <<
"天 "
<< endl;
}
輸出結果:
1268575163
2023年3月14日 21:59:23 星期日 當年的第72天
2023年3月14日 13:59:23 星期日 當年的第72天
三、輸出時間
c/c++語言提供了用字串格式表示時間的函式。
char * asctime(const struct tm *)
char * ctime(const time_t *)
這兩個函式返回值都是乙個表示時間的字串,區別在於傳入的引數不同。
[cpp]view plain
copy
#include
#include
using
namespace
std;
intmain(
void
)
輸出結果:
1268575163
sun mar 14 13:59:23 2010
sun mar 14 21:59:23 2010
四、計算時間間隔
可以通過difftime來計算兩個時間的間隔,可以精確到秒,函式原型:
double difftime(time_t, time_t)
要想精確到毫秒,就要使用clock函式了,函式原型:
clock_t clock(void)
從定義可以看出clock返回乙個clock_t型別,這個型別也定義在time.h中,原型是:
typedef long clock_t
clock_t也是乙個長整型,表示的是從程式開始執行到執行clock函式時所經過的cpu時鐘計時單元數。
[cpp]view plain
copy
#include
#include
using
namespace
std;
intmain(
void
)
輸出結果:
請按任意鍵繼續. . .
時間差:3
clock時間差:3094
在time.h中定義了乙個clocks_per_sec
/* clock ticks macro - ansi version */
#define clocks_per_sec 1000
表示1秒鐘內有多少個時鐘計時單元,在標準c/c++中,最小的計時單位是1毫秒。
五、自定義時間格式
c/c++在time.h中提供了乙個自定義時間格式的函式strftime,函式原型:
size_t strftime(char *strdest, size_t maxsize, const char *format, const struct tm *timeptr);
引數說明:
char *strdest:用來存放格式化後的字串快取,
size_t maxsize:指定最多可以輸出的字元數,
const char *format:格式化字串,
const struct tm *timeptr:要轉換的時間。
可使用的格式化字串:
%a 星期幾的簡寫
%a 星期幾的全稱
%b 月分的簡寫
%b 月份的全稱
%c 標準的日期的時間串
%c 年份的後兩位數字
%d 十進位制表示的每月的第幾天
%d 月/天/年
%e 在兩字元域中,十進位制表示的每月的第幾天
%f 年-月-日
%g 年份的後兩位數字,使用基於周的年
%g 年分,使用基於周的年
%h 簡寫的月份名
%h 24小時制的小時
%i 12小時制的小時
%j 十進位制表示的每年的第幾天
%m 十進位制表示的月份
%m 十時制表示的分鐘數
%n 新行符
%p 本地的am或pm的等價顯示
%r 12小時的時間
%r 顯示小時和分鐘:hh:mm
%s 十進位制的秒數
%t 水平製表符
%t 顯示時分秒:hh:mm:ss
%u 每週的第幾天,星期一為第一天 (值從0到6,星期一為0)
%u 第年的第幾周,把星期日做為第一天(值從0到53)
%v 每年的第幾周,使用基於周的年
%w 十進位制表示的星期幾(值從0到6,星期天為0)
%w 每年的第幾周,把星期一做為第一天(值從0到53)
%x 標準的日期串
%x 標準的時間串
%y 不帶世紀的十進位制年份(值從0到99)
%y 帶世紀部分的十進位制年份
%z,%z 時區名稱,如果不能得到時區名稱則返回空字元。
%% 百分號
[cpp]view plain
copy
#include
#include
using
namespace
std;
intmain(
void
)
輸出結果:
1268575163
格式化輸出:2010-03-14 21:59:23
C C 時間函式的使用
一 獲取日曆時間 time t是定義在time.h中的乙個型別,表示乙個日曆時間,也就是從1970年1月1日0時0分0秒到此時的秒數,原型是 typedef long time t time value 可以看出time t其實是乙個長整型,由於長整型能表示的數值有限,因此它能表示的最遲時間是203...
C C 時間函式的使用
一 獲取日曆時間 time t是定義在time.h中的乙個型別,表示乙個日曆時間,也就是從1970年1月1日0時0分0秒到此時的秒數,原型是 typedef long time t time value 可以看出time t其實是乙個長整型,由於長整型能表示的數值有限,因此它能表示的最遲時間是203...
C C 時間函式
1 time函式 標頭檔案 time.h 函式定義 time t time time t t 說明 返回從1970年1月1日的utc時間從0時0分0妙算起到現在所經過的秒數。include include int main 輸出 1302079744 1302079744 附 time t 一路追蹤...