C语言如何返回格式化日期时间?(将日期和时间以字符串格式输出)ctime()asctime()localtime()
Posted Dontla
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言如何返回格式化日期时间?(将日期和时间以字符串格式输出)ctime()asctime()localtime()相关的知识,希望对你有一定的参考价值。
ctime()函数:
头文件:
#include <time.h>
定义函数:
char *ctime(const time_t *timep);
函数说明:ctime()将参数timep 所指的time_t 结构中的信息转换成真实世界所使用的时间日期表示方法,然后将结果以字符串形态返回。此函数已经由时区转换成当地时间,字符串格式为"Wed Jun 30 21 :49 :08 1993\\n"。
注意:若再调用相关的时间日期函数,此字符串可能会被破坏。
返回值:返回一字符串表示目前当地的时间日期。
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
time_t timep;
time(&timep);
printf("%s", ctime(&timep));
return 0;
ubuntu上编译运行结果:
[yg@ubuntu ~/arnold_test/20211214_Test_ctime_format]4$ gcc ./test.c
[yg@ubuntu ~/arnold_test/20211214_Test_ctime_format]5$ ./a.out
Tue Dec 14 15:07:22 2021
asctime()函数
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
//char* ctime(const time_t* timep);
time_t timep;
time(&timep);
printf("%s", ctime(&timep));
printf("%s", asctime(gmtime(&timep)));
return 0;
ubuntu上编译运行结果:
[yg@ubuntu ~/arnold_test/20211214_Test_ctime_format]9$ ./a.out
Tue Dec 14 15:13:04 2021
Tue Dec 14 07:13:04 2021
怎么跟之前的差8个小时??前面的跟我的电脑时间是一致的。。。
获取自定义格式化时间
#include <time.h>
#include <stdio.h>
int main(void)
time_t nowtime;
struct tm* timeinfo;
time(&nowtime);
timeinfo = localtime(&nowtime);
int xtn = timeinfo->tm_year + 1900;
int xty = timeinfo->tm_mon + 1;
int xtr = timeinfo->tm_mday;
int xts = timeinfo->tm_hour;
int xtf = timeinfo->tm_min;
int xtm = timeinfo->tm_sec;
printf("%d年%d月%d日,%d时%d分%d秒\\n", xtn, xty, xtr, xts, xtf, xtm);
printf("%d%d%d-%d%d%d\\n", xtn, xty, xtr, xts, xtf, xtm);
ubuntu上编译运行结果:
2021年12月14日,15时36分31秒
20211214-153631
参考文章2:c语言计算年月日时分秒程序,C语言入门级代码 获取当前系统的年月日时分秒
改成函数接口形式(传入字符指针)
#include <time.h>
#include <stdio.h>
#include <string.h>
//arnold add 获取格式化时间
void get_format_time(char* format_time_)
time_t nowtime;
struct tm* timeinfo;
time(&nowtime);
timeinfo = localtime(&nowtime);
int xtn = timeinfo->tm_year + 1900;
int xty = timeinfo->tm_mon + 1;
int xtr = timeinfo->tm_mday;
int xts = timeinfo->tm_hour;
int xtf = timeinfo->tm_min;
int xtm = timeinfo->tm_sec;
sprintf(format_time_, "%d%d%d-%d%d%d", xtn, xty, xtr, xts, xtf, xtm);
int main()
//arnold add:将时间作为视频名
char format_time[64] = 0;
get_format_time(format_time);
strcat(format_time, ".mp4"); //字符串拼接
char *output_file = format_time;
printf("%s\\n", output_file);
return 0;
ubuntu上编译运行结果:
[yg@ubuntu ~/arnold_test/20211214_Test_ctime_format]30$ gcc ./test.c
[yg@ubuntu ~/arnold_test/20211214_Test_ctime_format]31$ ./a.out
20211214-16250.mp4
以上是关于C语言如何返回格式化日期时间?(将日期和时间以字符串格式输出)ctime()asctime()localtime()的主要内容,如果未能解决你的问题,请参考以下文章
C++ - 如何以独立于平台、线程安全的方式以用户首选的日期/时间语言环境格式格式化文件的最后修改日期和时间