1. 程式人生 > 其它 >c++輸出當前的時間

c++輸出當前的時間

1. 時間相關資料型別#

一個是time_t,與時間函式相關的變數,定義的變數記錄著自 1970 年 1 月 1 日以來經過的秒數,也稱作時間戳。
另一個是結構體tm

struct tm
{
   int tm_sec;         // 秒,範圍從 0 到 59
   int tm_min;         // 分,範圍從 0 到 59
   int tm_hour;        // 小時,範圍從 0 到 23
   int tm_mday;        // 一月中的第幾天,範圍從 1 到 31
   int tm_mon;         // 月份,範圍從 0 到 11
   int tm_year;        // 自 1900 起的年數
   int tm_wday;        // 一週中的第幾天,範圍從 0 到 6
   int tm_yday;        // 一年中的第幾天,範圍從 0 到 365
   int tm_isdst;       // 夏令時
};

2. 時間相關處理函式#

time_t time(time_t *time);

一般使用time(NULL)即可,可得到當前時區的時間戳。

struct tm *localtime(const time_t *timer);

將time_t型別轉換為本地時間的 tm 結構的指標。

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

str -- 這是指向目標陣列的指標,用來複制產生的 C 字串。
maxsize -- 這是被複制到 str 的最大字元數。
format -- 這是 C 字串,包含了普通字元和特殊格式說明符的任何組合。這些格式說明符由函式替換為表示 tm 中所指定時間的相對應值。
格式說明符:

說明符 含義 例項
%a 縮寫的星期幾名稱 Sun
%A 完整的星期幾名稱 Sunday
%b 縮寫的月份名稱 Mar
%B 完整的月份名稱 March
%c 日期和時間表示法 Sun Aug 19 02:56:02 2012
%d 一月中的第幾天(01-31) 19
%H 24 小時格式的小時(00-23) 14
%I 12 小時格式的小時(01-12) 05
%j 一年中的第幾天(001-366) 231
%m 十進位制數表示的月份(01-12) 08
%M 分(00-59) 55
%p AM 或 PM 名稱 PM
%S 秒(00-61) 02
%U 一年中的第幾周,以第一個星期日作為第一週的第一天(00-53) 33
%w 十進位制數表示的星期幾,星期日表示為 0(0-6) 4
%W 一年中的第幾周,以第一個星期一作為第一週的第一天(00-53) 34
%x 日期表示法 08/19/12
%X 時間表示法 02:50:06
%y 年份,最後兩個數字(00-99) 01
%Y 年份 2012
%Z 時區的名稱或縮寫 CDT
%% 一個 % 符號 %

3. 程式碼實現#

char str[50];
time_t now = time(NULL);
strftime(str, 50, "%x %X", localtime(&now));
cout << str << endl;