我的代码如下,
time_t t;
struct tm tm;
struct tm * tmp;
time( &t );
tmp = gmtime(&t);
char buf[100];
strftime(buf, 42, "%F", tmp); // assertion failure
它表示`表达式:(“无效的格式指令”,0)。我想将时间转换为Short YYYY-MM-DD日期,相当于%Y-%m-%d格式。
当我尝试这个时,会发生同样的事情,
const char* fmt = "%a, %d %b %y %T %z";
if (strftime(buf, sizeof(buf), fmt, tmp) == 0) // assertion failure
{
fprintf(stderr, "strftime returned 0");
exit(EXIT_FAILURE);
}
答案 0 :(得分:1)
%F
,%T
和%z
,而C ++ 11只引入了C ++。从您对问题的评论来看,您似乎正在使用Microsoft在VisualStudio 2010中部分实现C ++ 11.不幸的是,您唯一的选择是:
答案 1 :(得分:0)
以下对我有用:
#include <stdio.h>
#include <time.h>
int main(int argc, char **argv)
{
time_t t;
struct tm tm;
struct tm * tmp;
time( &t );
tmp = gmtime(&t);
const char* fmt = "%a, %d %b %y %T %z";
char buf[100];
if (strftime(buf, sizeof(buf), fmt, tmp) == 0) // assertion failure
{
fprintf(stderr, "strftime returned 0");
return 1;
}
printf("%s\n", buf);
return 0;
}
输出结果为:
Fri, 23 May 14 06:48:27 +0000