位置:首頁 > 高級語言 > C語言標準庫 > strftime() - C語言庫函數

strftime() - C語言庫函數

C庫函數 size_t strftime(char *str, size_t maxsize, const char *format, const struct tm *timeptr) 格式表示的時間結構timeptr根據定義格式並存儲到str格式規則。

聲明

以下是strftime() 函數的聲明。

size_t strftime(char *str, size_t maxsize, const char *format, const struct tm *timeptr)

參數

  • str -- 這是C字符串複製到目標數組的指針。

  • maxsize -- 這是給 str 要複製的字符的最大數目。

  • format -- 這是C字符串,其中包含常規字符和特殊格式說明符的任意組合。這些格式說明符該函數相應的值代替 tm 中指定的時間來表示。格式說明符:

指示符 取代 例子
%a Abbreviated weekday name Sun
%A Full weekday name Sunday
%b Abbreviated month name Mar
%B Full month name March
%c Date and time representation Sun Aug 19 02:56:02 2012
%d Day of the month (01-31) 19
%H Hour in 24h format (00-23) 14
%I Hour in 12h format (01-12) 05
%j Day of the year (001-366) 231
%m Month as a decimal number (01-12) 08
%M Minute (00-59) 55
%p AM or PM designation PM
%S Second (00-61) 02
%U Week number with the first Sunday as the first day of week one (00-53) 33
%w Weekday as a decimal number with Sunday as 0 (0-6) 4
%W Week number with the first Monday as the first day of week one (00-53) 34
%x Date representation 08/19/12
%X Time representation 02:50:06
%y Year, last two digits (00-99) 01
%Y Year 2012
%Z Timezone name or abbreviation CDT
%% A % sign %
  • 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字符串適合大小的字符(包括終止空字符)小於總數的字符複製到 str(不包括終止空字符),否則返回0。

例子

下麵的例子演示了如何使用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 & time : |%s|
", buffer );
  
   return(0);
}

讓我們編譯和運行上麵的程序,這將產生以下結果:

Formatted date & time : |08/23/12 - 12:40AM|