【问题标题】:how to convert time_t to something like "Fri, 12 Nov 2010 16:02:54 GMT " in C on Linux如何在 Linux 上的 C 中将 time_t 转换为“Fri, 12 Nov 2010 16:02:54 GMT”
【发布时间】:2011-05-09 04:20:02
【问题描述】:

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

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

我分析了一些网站,发现它们都以格式显示时间:

Fri, 12 Nov 2010 16:02:54 GMT,

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

【问题讨论】:

  • 参见。 man ctime - 希望这会有所帮助

标签: c gmt


【解决方案1】:

strftime() 是你需要的函数。

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

【讨论】:

    【解决方案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() 给出的格式

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-02-02
      • 2018-06-04
      • 2012-07-31
      • 2020-04-24
      • 2018-05-19
      • 1970-01-01
      • 2010-09-09
      • 2017-01-26
      相关资源
      最近更新 更多