首頁 > 軟體

C語言時間函數之strftime()詳解

2022-02-18 19:00:27

strftime函數主要用於時間格式化,它的函數原型如下:

size_t __cdecl strftime(char * __restrict__ _Buf,size_t _SizeInBytes,const char * __restrict__ _Format,const struct tm * __restrict__ _Tm);

它有4個引數:

  • _Buf, 表示返回的時間字串
  • _SizeInBytes, 要寫入的位元組的最大數量
  • _Format, 這是 C 字串,包含了普通字元和特殊格式說明符的任何組合。
  • _Tm, 輸入時間結構體

其中C字串格式符說明如下:

說明符替換為範例
%a縮寫的星期幾名稱Sun
%A完整的星期幾名稱Sunday
%b縮寫的月份名稱Mar
%B完整的月份名稱March
%c日期和時間表示法Sun Jan 23 02:56:02 2022
%d一月中的第幾天(01-31)19
%H24 小時格式的小時(00-23)14
%I12 小時格式的小時(01-12)05
%j一年中的第幾天(001-366)231
%m十進位制數表示的月份(01-12)08
%M分(00-59)55
%pAM 或 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
%%一個 % 符號%

時間結構體格式如下:

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;       /* 夏令時                        */    
};

也就是說strftime函數的功能就是將時間結構體轉換為指定的字串格式。下面通過一個簡單例子來演示strftime函數的用法。

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(int argc, char** argv)
{
	time_t now_time;
	struct tm *info;
	char buffer[80];
	time( &now_time );
	info = localtime( &now_time );
	strftime(buffer, 80, "%Y-%m-%d %H:%M:%S", info);
	printf("格式化的日期和時間 : %s n", buffer );
	return 0;
}

首先使用time函數獲取當前時間,然後在使用strftime函數將時間通過指定的字串格式列印出來,列印結果如下:

通過列印的結果可以看出,列印字串的格式和函數中指定的字串格式是一樣的,這樣通過對字串格式的設定,就可按照自己的要求列印出時間和日期的字串,使用起來更加靈活和方便。

總結

本篇文章就到這裡了,希望能夠給你帶來幫助,也希望您能夠多多關注it145.com的更多內容!   


IT145.com E-mail:sddin#qq.com