C - 只打印来自 mktime 的选定信息?

C - Printing only selected information from mktime?

我有点受困于 mktime 函数,如果能得到任何帮助,我将不胜感激。

所以我正在做的是,让用户输入年、月和日,然后 运行 tm 结构来计算所有内容,如下所示:

结构tm时间;

time_t t;

time.tm_year = year - 1900;
time.tm_mon = month - 1;
time.tm_mday = day;
time.tm_hour = 0;
time.tm_min = 0;
time.tm_sec = 0;
time.tm_isdst = -1;

然后我 运行 mktime 函数并将其设置为等于 t:

t = mktime(&time);

然后我 运行 这样的打印函数:

printf("%s", ctime(&t));

但是,我通过这种方法得到的是这样的,例如:

2013 年 8 月 23 日星期六00:00:00

但我希望最终的时间格式是这样的:

2013 年 02 月 11 日星期一

我该怎么做?我认为我使用 ctime 函数的方法不太正确。

也许我应该使用 strftime 函数?

请注意,我不需要打印当前时间。

谢谢,祝你玩得开心:)

您可以为此使用 strftime。这是一个例子:

char str[50];
struct tm *tm_info = localtime(&t);
strftime(str, 50, "%a %G %m %d", tm_info);

然后就可以用printf("%s\n", str)输出格式化日期了

感谢 Xis88 提供的格式。