C语言 <time.h> strftime 函数

  • 描述

    C库函数size_t strftime(char *str, size_t maxsize, const char *format, const struct tm *timeptr)根据format定义的格式规则格式化结构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 缩写工作日的名字 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
      %M 分钟(00-59) 55
      %p 上午或下午指定 PM
      %S 第二个(00 - 61) 02
      %U 以第一个星期日为第一周第一天的周数(00-53) 33
      %w 以周日为0(0-6)的小数形式表示的工作日 4
      %W 第一周第一天(00-53) 34
      %x 表示日期 08/19/12
      %X 时间的表示 02:50:06
      %y 年份,最后两位数(00-99) 01
      %Y 一年 2012
      %Z 时区名称或缩写 CDT
      %% 一个%标识 %
    • 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的字符总数(不包括终止的空字符),否则返回零。
    示例
    以下示例显示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|