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/