当前位置: 首页 > 文档资料 > C 标准库 中文版 >

size

优质
小牛编辑
132浏览
2023-12-01

描述 (Description)

C库函数size_t strftime(char *str, size_t maxsize, const char *format, const struct tm *timeptr)根据格式定义的格式化规则格式化结构timeptr表示的时间并存储到str

声明 (Declaration)

以下是strftime()函数的声明。

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

参数 (Parameters)

  • 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小时12h格式(01-12)05
%j一年中的某一天(001-366)231
%m月份为十进制数字(01-12)08
%MMinute (00-59)55
%pAM or PM designationPM
%SSecond (00-61)02
%U第一个星期日作为第一周的第一天的周数(00-53)33
%w工作日为十进制数,周日为0(0-6)4
%W第一周一作为第一周第一天的周数(00-53)34
%x日期表示08/19/12
%XTime representation02:50:06
%y年份,最后两位数(00-99)01
%YYear2012
%ZTimezone name or abbreviationCDT
%%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             */	
};

返回值 (Return Value)

如果生成的C字符串适合小于大小的字符(包括终止空字符),则返回复制到str的字符总数(不包括终止空字符),否则返回零。

例子 (Example)

以下示例显示了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|\n", buffer );
   return(0);
}

让我们编译并运行上面的程序,它将产生以下结果 -

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