欢迎访问宙启技术站
智能推送

strftime函数-时间格式化

发布时间:2023-06-18 15:40:22

strftime函数是C语言中用于时间格式化的函数,其定义在time.h头文件中。

strftime函数的原型如下:

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

其中,各个参数的含义如下:

str:用于存储格式化后时间的缓冲区,是一个字符数组指针。

maxsize:缓冲区的长度,不能小于格式化后时间所需要的最小长度。

format:时间格式化字符串,用于指定时间按照何种格式进行格式化。

timeptr:指向一个tm结构体的指针,该结构体包含了需要格式化的时间信息。

strftime函数的返回值为格式化后时间字符串的长度,不包括字符串末尾的空字符。

strftime函数支持的时间格式化字符串比较多,其中一些比较常用的格式化字符串如下:

%Y:以四位数字表示的年份。

%m:月份,从01到12。

%d:一个月中的第几天,从01到31。

%H:24小时制的小时数,从00到23。

%M:分钟数,从00到59。

%S:秒数,从00到60(60是为了解决闰秒而设立的)。

%a:星期几的缩写(英文),如Sun、Mon等。

%A:星期几的全称(英文),如Sunday、Monday等。

%b:月份的缩写(英文),如Jan、Feb等。

%B:月份的全称(英文),如January、February等。

%c:标准的日期时间串。

%d:一个月中的第几天,从01到31。

%H:24小时制的小时数,从00到23。

%I:12小时制的小时数,从01到12。

%j:一年中的第几天,从001到366。

%m:月份,从01到12。

%M:分钟数,从00到59。

%p:上午或下午(英文),如AM、PM等。

%S:秒数,从00到60。

%U:一年中的第几周(从周日开始),从00到53。

%w:星期几的数字表示,从0到6(0表示周日)。

%W:一年中的第几周(从周一开始),从00到53。

%x:日期串,格式为mm/dd/yy。

%X:时间串,格式为hh:mm:ss。

%z:时区,格式如+800表示比UTC快8个小时,-800则表示比UTC慢8个小时。

%%:输出%字符本身。

使用strftime函数进行时间格式化的示例代码如下:

#include <stdio.h>

#include <time.h>

int main()

{

    time_t now = time(NULL);

    struct tm *t = localtime(&now);

    char buf[64];

    strftime(buf, sizeof(buf), "%Y-%m-%d %H:%M:%S", t);

    printf("当前时间是%s

", buf);

    return 0;

}

运行结果如下:

当前时间是2022-04-13 11:34:33

以上代码实现了获取当前时间并使用strftime函数将其格式化为YYYY-MM-DD HH:MM:SS的形式输出。此外,strftime函数还可以使用其他的格式化字符串对时间进行格式化,根据实际需求进行选择即可。