- C 標準庫
- C 庫 - 首頁
- C 庫 - <assert.h>
- C 庫 - <complex.h>
- C 庫 - <ctype.h>
- C 庫 - <errno.h>
- C 庫 - <fenv.h>
- C 庫 - <float.h>
- C 庫 - <inttypes.h>
- C 庫 - <iso646.h>
- C 庫 - <limits.h>
- C 庫 - <locale.h>
- C 庫 - <math.h>
- C 庫 - <setjmp.h>
- C 庫 - <signal.h>
- C 庫 - <stdalign.h>
- C 庫 - <stdarg.h>
- C 庫 - <stdbool.h>
- C 庫 - <stddef.h>
- C 庫 - <stdio.h>
- C 庫 - <stdlib.h>
- C 庫 - <string.h>
- C 庫 - <tgmath.h>
- C 庫 - <time.h>
- C 庫 - <wctype.h>
- C 標準庫資源
- C 庫 - 快速指南
- C 庫 - 有用資源
- C 庫 - 討論
- C 程式設計資源
- C 程式設計 - 教程
- C - 有用資源
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
廣告