C 庫 - strftime() 函式



C 庫的 strftime() 函式用於將日期和時間格式化為字串。它允許使用者設定自定義的日期和時間表示形式,這使得該函式更有價值。

在這裡,size_t strftime(char *str, size_t maxsize, const char *format, const struct tm *timeptr) 根據 format 中定義的格式化規則格式化結構 timeptr 中表示的時間,並將其儲存到 str 中。

語法

以下是 C 庫 strftime() 函式的語法:

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
%% 一個 % 符號 %
  • timeptr - 這是指向 tm 結構的指標,該結構包含分解成其組成部分的日曆時間,如下所示:

struct tm {
   int tm_sec;         /* seconds,  range 0 to 59          */
   int tm_min;         /* minutes, range 0 to 59           */
   int tm_hour;        /* hours, range 0 to 23             */
   int tm_mday;        /* day of the month, range 1 to 31  */
   int tm_mon;         /* month, range 0 to 11             */
   int tm_year;        /* The number of years since 1900   */
   int tm_wday;        /* day of the week, range 0 to 6    */
   int tm_yday;        /* day in the year, range 0 to 365  */
   int tm_isdst;       /* daylight saving time             */	
};

返回值

如果結果 C 字串的字元數少於 size 個字元(包括終止空字元),則返回複製到 str 中的字元總數(不包括終止空字元)。否則,它返回零。

示例 1

以下是基本 C 程式庫,用於演示 strftime() 函式,該函式將生成日期和時間。

#include <stdio.h>
#include <time.h>

int main () {
   time_t rawtime;
   struct tm *info;
   char buffer[80];

   time( &rawtime );

   info = localtime( &rawtime );

   strftime(buffer,80,"%x - %I:%M%p", info);
   printf("Formatted date and time : |%s|\n", buffer );
  
   return(0);
}

輸出

執行上述程式碼後,我們將得到以下結果:

Formatted date and time : |05/15/24 - 08:22AM|

示例 2

在使用 locatime() 函式時,它會將當前時間轉換為本地時間,並將結果以字串格式返回。

#include <stdio.h>
#include <time.h>
#define Size 50

int main() {
   time_t t;
   struct tm *tmp;
   char MY_TIME[Size];
   // Get the current time
   time(&t); 
   // Convert to local time
   tmp = localtime(&t); 
   // Format the date and time
   strftime(MY_TIME, sizeof(MY_TIME), "%x - %I:%M%p", tmp);
   printf("Formatted date & time: %s\n", MY_TIME);
   return 0;
}

輸出

以上程式碼生成以下結果:

Formatted date & time: 05/15/24 - 08:26AM

示例 3

C 程式使用 localtime() 和 strftime() 函式列印當前日期和時間。

#include<stdio.h>
#include<time.h>

int main()
{
   time_t anytime;
   struct tm *current;
   char time_str[64];
  
   time(&anytime);

   current = localtime(&anytime);
   strftime(time_str, 64, "%A, %B %d, %Y", current);
   printf("Today is %s\n", time_str);
   return 0;
}

輸出

執行程式碼後,我們將得到以下結果:

Today is Wednesday, May 15, 2024
廣告