位置:首页 > 高级语言 > 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|