【问题标题】:C - How to convert time_t to tm?C - 如何将 time_t 转换为 tm?
【发布时间】:2014-02-02 02:46:25
【问题描述】:

我有一个使用time_t 数据类型的变量。我想将此类型转换为“YYYY-MM-DD HH:MM:SS”。我只知道它是否仅适用于localtime() 示例:

char buff[20];
time_t now = time(NULL);
strftime(buff, 20, "%Y-%m-%d %H:%M:%S", localtime(&now));

任何建议如何转换它?因为我的时间总是每分钟都在增加,而不是像localtime() 这样的固定时间。我需要这种转换来匹配 MySQL 数据库中的datetime 类型。

【问题讨论】:

    标签: mysql tm time.h time-t


    【解决方案1】:

    函数gmtimelocaltime(分别用于UTC 和当地时间)将任意 time_t 转换为struct tm,其中包含年、月等各个字段。

    然后您可以使用 strftimesprintf 从它们创建字符串,例如:

    char buff[11];
    sprintf (buff, "%04d-%02d-%02d",
        mytm.tm_year + 1900,
        mytm.tm_mon + 1,
        mytm.tm_mday);
    

    【讨论】:

    • 这两个函数以tm 格式返回当前时间。在这种情况下,我定义了自己的 time_t 以转换为 tm
    • @Angga,这两个函数与当前时间无关。它们将处理任意的time_t 值,可以是time(0) 的当前时间,也可以是(time_t)42 等任何其他时间点。
    • 我已经尝试过了,但是 localtime() 需要 const time_t *,而我的变量使用的是 time_t 数据类型。我试图转换它,或者使用 localtime(&myvar) 它使我的程序出错。有什么解决办法吗?
    • 是的,发布您的错误并让我们看看,最好是在一个新问题中,因为 1/ 它仅与此问题相关,并且 2/ 您将得到比简单询问更广泛的回应评论。
    • 非常感谢您的帮助。经过一些编辑,它现在可以工作了。
    猜你喜欢
    • 2018-06-04
    • 2015-05-06
    • 1970-01-01
    • 2016-05-23
    • 2022-11-12
    • 2019-04-12
    • 2017-04-11
    • 2021-07-21
    • 1970-01-01
    相关资源
    最近更新 更多