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为单位的时间。格式说明符说明如下-
- timeptr-这是指向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 %% 一个%标识 % 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|