windows - 如何从 C 代码 (Win32) 生成 RFC1123 日期字符串

标签 windows winapi

RFC1123定义了很多东西,其中包括在互联网协议(protocol)中使用的日期格式。 HTTP ( RFC2616 ) 指定必须按照 RFC1123 生成日期格式。

看起来像这样:

Date: Wed, 28 Apr 2010 02:31:05 GMT

如何从在 Windows 上运行的 C 代码生成 RFC1123 时间字符串? 我没有使用 C# 和 DateTime.ToString()。

我知道我可以自己编写代码来发出时区和日期缩写,但我希望 Windows API 中已经存在这些代码。

谢谢。

最佳答案

这是我用的:

static const char *DAY_NAMES[] =
  { "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat" };
static const char *MONTH_NAMES[] =
  { "Jan", "Feb", "Mar", "Apr", "May", "Jun",
    "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" };

char *Rfc1123_DateTimeNow()
{
    const int RFC1123_TIME_LEN = 29;
    time_t t;
    struct tm tm;
    char * buf = malloc(RFC1123_TIME_LEN+1);

    time(&t);
    gmtime_s(&tm, &t);

    strftime(buf, RFC1123_TIME_LEN+1, "---, %d --- %Y %H:%M:%S GMT", &tm);
    memcpy(buf, DAY_NAMES[tm.tm_wday], 3);
    memcpy(buf+8, MONTH_NAMES[tm.tm_mon], 3);

    return buf;
}

关于windows - 如何从 C 代码 (Win32) 生成 RFC1123 日期字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2726975/

相关文章:

windows - 打开cmd,切换目录,执行命令

windows - 如何使用 docker compose 卷挂载 windows 文件夹?

php - 安装 php_svn windows & linux

windows - 无法在 Windows 上拉取没有此类主机的图像

c# - Flash 对话消息

c++ - 当服务器重新启动并且客户端收到 WSAECONNRESET 错误代码时,我是否应该重新创建整个套接字

c++ - 如果给定的 RegisterClassEx() 调用成功一次,我可以假设它永远都是吗?

c# - 我怎样才能占用内存来测试另一个应用程序?

c++ - WinAPI:创建没有标题栏的可调整大小的窗口,但带有最小化/最大化/关闭按钮(如 Firefox/Chrome/Opera)

c - Win API,如何在对话框中写入文本?