在C ++中将unix时间戳作为字符串获取

时间:2010-05-08 22:59:03

标签: c++ timestamp

我正在使用函数time()来获取C ++中的时间戳,但是,在这样做之后,我需要将它转换为字符串。我不能使用ctime,因为我需要时间戳本身(以10个字符的格式)。麻烦的是,我不知道time_t变量的形式是什么,所以我不知道我将它转换成什么。 cout处理它,所以它必须是一些描述的字符串,但我不知道是什么。

如果有人能帮助我,我会非常感激,我完全被难过了。

或者,您是否可以将ctime的输出提供给MySQL datetime字段并正确解释?为了理解,我仍然会理解我的问题的第一部分的答案,但这可以解决我的问题。

4 个答案:

答案 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只是一个整数。