C语⾔时间函数之strftime()详解
strftime函数主要⽤于时间格式化,它的函数原型如下:
size_t __cdecl strftime(char * __restrict__ _Buf,size_t _SizeInBytes,const char * __restrict__ _Format,const struct tm * __restrict__ _Tm);
它有4个参数:
_Buf, 表⽰返回的时间字符串
_SizeInBytes, 要写⼊的字节的最⼤数量
_Format, 这是 C 字符串,包含了普通字符和特殊格式说明符的任何组合。
_Tm, 输⼊时间结构体
其中C字符串格式符说明如下:
说明符替换为⽰例
%a缩写的星期⼏名称Sun
%A完整的星期⼏名称Sunday
%b缩写的⽉份名称Mar
%B完整的⽉份名称March
%c⽇期和时间表⽰法Sun Jan 23 02:56:02 2022
%d⼀⽉中的第⼏天(01-31)19
%H24 ⼩时格式的⼩时(00-23)14
%I12 ⼩时格式的⼩时(01-12)05
%j⼀年中的第⼏天(001-366)231
%m⼗进制数表⽰的⽉份(01-12)08
%M分(00-59)55
%p AM 或 PM 名称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; /* 秒,范围从 0 到 59 */
int tm_min; /* 分,范围从 0 到 59 */
int tm_hour; /* ⼩时,范围从 0 到 23 */
c语言struct用法例子int tm_mday; /* ⼀⽉中的第⼏天,范围从 1 到 31 */
int tm_mon; /* ⽉份,范围从 0 到 11 */
int tm_year; /* ⾃ 1900 起的年数 */
int tm_wday; /* ⼀周中的第⼏天,范围从 0 到 6 */
int tm_yday; /* ⼀年中的第⼏天,范围从 0 到 365 */
int tm_isdst; /* 夏令时 */
};
也就是说strftime函数的功能就是将时间结构体转换为指定的字符串格式。下⾯通过⼀个简单例⼦来演⽰strftime函数的⽤法。#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(int argc, char** argv)
{
time_t now_time;
struct tm *info;
char buffer[80];
time( &now_time );
info = localtime( &now_time );
strftime(buffer, 80, "%Y-%m-%d %H:%M:%S", info);
printf("格式化的⽇期和时间 : %s \n", buffer );
return 0;
}
⾸先使⽤time函数获取当前时间,然后在使⽤strftime函数将时间通过指定的字符串格式打印出来,打印结果如下:
通过打印的结果可以看出,打印字符串的格式和函数中指定的字符串格式是⼀样的,这样通过对字符串格式的设置,就可按照⾃⼰的要求打印出时间和⽇期的字符串,使⽤起来更加灵活和⽅便。
总结
本篇⽂章就到这⾥了,希望能够给你带来帮助,也希望您能够多多关注的更多内容!
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论