我正在使用函数time()来获取C ++中的时间戳,但是,在这样做之后,我需要将它转换为字符串。我不能使用ctime,因为我需要时间戳本身(以10个字符的格式)。麻烦的是,我不知道time_t变量的形式是什么,所以我不知道我将它转换成什么。 cout处理它,所以它必须是一些描述的字符串,但我不知道是什么。
如果有人能帮助我,我会非常感激,我完全被难过了。
或者,您是否可以将ctime的输出提供给MySQL datetime字段并正确解释?为了理解,我仍然会理解我的问题的第一部分的答案,但这可以解决我的问题。
答案 0 :(得分:4)
time_t
是某种整数。如果cout
以您希望的方式处理它,您可以使用std::stringstream
将其转换为字符串:
std::string timestr(time_t t) {
std::stringstream strm;
strm << t;
return strm.str();
}
答案 1 :(得分:2)
我遇到了同样的问题。我解决了它如下:
char arcString [32];
std::string strTmp;
// add start-date/start-time
if (strftime (&(arcString [0]), 20, "%Y-%m-%d_%H-%M-%S", (const tm*) (gmtime ((const time_t*) &(sMeasDocName.sStartTime)))) != 0)
{
strTmp = (char*) &(arcString [0]);
}
else
{
strTmp = "1970-01-01_00:00:00";
}
答案 2 :(得分:1)
试试sprintf(string_variable, "%d", time)
或std::string(itoa(time))
?
答案 3 :(得分:0)
http://www.codeguru.com/forum/showthread.php?t=231056
最后time_t
只是一个整数。