如何在Linux上的C语言中将time_t转换为“Fri,2010年11月12日16:02:54 GMT”

时间:2010-11-12 16:23:33

标签: c gmt

我在Linux上用C编写一个简单的Web服务器。

我必须添加将传输到客户端(浏览器)的文件的最后修改时间,

我分析了一些网站,并发现他们都以格式提供时间:

Fri, 12 Nov 2010 16:02:54 GMT

我的问题是,我可以将time_t值简单地转换为以前格式的字符串吗?有这个功能吗?或者格式是不重要的?

2 个答案:

答案 0 :(得分:5)

strftime()是你需要的功能。

关于time_t的维基百科文章给出了一个很好的例子 http://en.wikipedia.org/wiki/Time_t

答案 1 :(得分:2)

看起来像RFC 822中定义的格式,您可以将time_t转换为struct tm,并将其格式化为使用strftime字符串,如

struct tm time_tm;
char http_time[64];
time_t  t = time(NULL);
gmtime_r(&t,&time_tm);
strftime(http_time,sizeof http_time,"%a, %d %b %Y %H:%M:%S +0000",&time_tm);

请注意; strftime使用当前语言环境转换名称,您可能需要更改当前语言环境以获取英语名称。

HTTP规范还允许asctime()

给出的格式