时间戳转换错误

时间:2019-02-07 20:16:03

标签: c++ string timestamp

我是C ++的新手,我在用c ++转换时间戳UNIX时遇到问题,因为转换恰好提前一小时,我认为错误很愚蠢,并且是在字符串的时间戳转换中,因为的值时间戳是正确的。

这是我的代码

string BlockHeader::convertTimeStamp() {
char data[30];
time_t timeToValue = time;
tm *tmTime = localtime(&timeToValue);
strftime (data,30,"%F %T", tmTime);
string dataString = string(data);
cout << dataString;
return dataString;

}

正确的值为1231006505 -> 2009-01-03 18:15:05,但转换的值为2009-01-03 19:15:05

对不起,我的英语很糟糕,但是我的学习却很。

感谢您的帮助

2 个答案:

答案 0 :(得分:1)

  

正确的值是1231006505-> 2009-01-03 18:15:05

不,不是因为

  

欧洲/罗马

欧洲/罗马时区比UTC早一小时,因此1231006505 正确地在该时区2009-01-03 19:15:05。

如果要使用UTC时间,则需要使用gmtime而不是localtime。函数名称中的 Local 是指 local 时区。

答案 1 :(得分:0)

使用gmtime代替localtime

localtime会考虑您的时区(现在是UTC +1),而gmtime则没有。