时间戳转换错误

Wrong conversion of the timestamp

本文关键字:错误 转换 时间戳      更新时间:2023-10-16

我是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

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

感谢您的帮助

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

不,不是因为

欧洲/罗马

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

如果你想要UTC时间,那么你需要使用gmtime而不是localtime函数名称中的本地是指本地时区。

使用 gmtime 而不是 localtime

本地时间会考虑您的时区(现在为 UTC +1(,GMTIME 不会。