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上编译运行结果:

20211214,15363120211214-153631

参考文章1:C语言中将日期和时间以字符串格式输出的方法

参考文章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/C++时间函数总结

C++ - 如何以独立于平台、线程安全的方式以用户首选的日期/时间语言环境格式格式化文件的最后修改日期和时间

c语言将日期转换为字符串 急求,谢谢!

如何将日期格式yyyymmdd

大声的问:linux下C如何才能把当前位置的当前时间转换成字符串,有会的木有?求解决!!!谢了啦~~

如何将日期字符串转换为 mysql 日期格式以使用 mysql 查询计算日期差异