【问题标题】:C - Printing only selected information from mktime?C - 仅打印来自 mktime 的选定信息?
【发布时间】:2016-01-16 22:35:04
【问题描述】:

我有点被 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 函数?

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

谢谢,祝你好运:)

【问题讨论】:

    标签: c mktime


    【解决方案1】:

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

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

    那么就可以使用printf("%s\n", str)输出格式化的日期了。

    感谢 Xis88 提供格式。

    【讨论】:

    • 您好,感谢您的回复。我认为这将是要走的路。但是如果我的结构被声明为这样的 struct tm time,我将如何实现它;而不是 struct tm *time?
    • 嗯,您可以简单地使用引用运算符指向您拥有的结构:strftime(str, 50, "%a %G %m %d", &time);,但我不确定您要做什么。为什么不简单地将其声明为指针并使用本地时间?
    • 哦,我想通了,非常感谢 :) 我用 &time 指向结构,现在它可以正常工作了。 :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-12
    • 1970-01-01
    • 2019-11-20
    • 2019-04-21
    • 2010-10-06
    • 1970-01-01
    相关资源
    最近更新 更多