strftime()函式,C語言時間格式化
阿新 • • 發佈:2019-01-26
函式原型
#include <time.h>
size_t strftime(char *str, size_t count, const char *format, const struct tm *tm);
引數說明
- str, 表示返回的時間字串
- count, 要寫入的位元組的最大數量
- format, 格式字串由零個或多個轉換符和普通字元(除%)
- tm, 輸入時間
返回值
- 如果包含終止的空字元在內的結果字元的總數不大於count,則函式strftime返回字元數,這些字元被放到s指向的陣列中但不包含終止的空字元。否則,函式返回零,且陣列的內容不確定。
格式說明
格式符號 | 說明 |
---|---|
%a | 區域設定的縮寫星期名 |
%A | 區域設定的完整星期名 |
%b | 區域設定的縮寫月份名 |
%B | 區域設定的完整月份名 |
%c | 區域設定的適當的日期和時間表示 |
%d | 表示為一個十進位制數(01-31)的當月的第幾天 |
%H | 表示為一個十進位制數(00-23)的小時時間(24小時制) |
%I | 表示為一個十進位制數(01-12)的小時時間(12小時制) |
%j | 表示為一個十進位制數(001-366)的當年的第幾天 |
%m | 表示為一個十進位制數(01-12)的月份 |
%M | 表示為一個十進位制數(00-59)的分鐘數 |
%p | 區域設定的、與12小時制相關的AM/PM指示符等價的東西 |
%S | 表示為一個十進位制數(00-61)的秒數 |
%U | 表示為一個十進位制數(00-53)的當年的第幾周(第一個星期日是第一個星期的第一天) |
%w | 表示為一個十進位制數(0-6)的星期幾,星期日表示0 |
%W | 表示為一個十進位制數(00-53)的當年的第幾周(第一個星期一是第一個星期的第一天) |
%x | 區域設定的適當的日期表示 |
%X | 區域設定的適當的時間表示 |
%y | 表示為一個十進位制(00-99)的不帶世紀的年份 |
%Y | 表示為一個十進位制的帶世紀的年份 |
%Z | 時區名字或者它的縮寫取代,如果不能確定時區,則不能被字元 |
%% | 表示% |
如果一個轉換說明符表不是上面中的某一個,則行為未定義。
示例程式程式碼
#include <stdio.h>
#include <time.h>
int main()
{
time_t time_T;
time_T = time(NULL);
struct tm *tmTime;
// tm物件格式的時間
tmTime = localtime(&time_T);
printf("Now Time is: %d:%d:%d\n", (*tmTime).tm_hour, (*tmTime).tm_min, (*tmTime).tm_sec);
char* format = "%Y-%m-%d %H:%M:%S";
char strTime[100];
strftime(strTime, sizeof(strTime), format, tmTime);
printf("Time is :%s\n", strTime);
return 0;
}
// 程式碼結果
// Now Time is: 20:46:1
// Time is :2015-10-07 20:46:01