C - 如何将time_t转换为tm?

时间:2014-01-14 05:44:01

标签: mysql tm time.h time-t

我有一个使用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类型。

1 个答案:

答案 0 :(得分:4)

函数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);