1. 程式人生 > >strftime()函式,C語言時間格式化

strftime()函式,C語言時間格式化

函式原型

#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