我想将日期时间字符串保存到time_t,然后将其转换回原来的字符串。将字符串转换为time_t,然后将time_t转换回字符串
但下面将输出"2016-04-25_10:10:05"
代码和小时输出将通过改变date_str
不正确。
如果将代码更改为std::string date_str = "1470-04-25_09:10:05";
, ,结果将会更正。
下面是代码:
#include <iostream>
#include <ctime>
#include <string>
#include <sstream>
#include <iomanip>
int main()
{
// try changing year, hour will be incorrect
std::string date_str = "2016-04-25_09:10:05";
std::tm tm{};
std::istringstream str_stream(date_str);
str_stream >> std::get_time(&tm, "%Y-%m-%d_%T");
std::time_t time = std::mktime(&tm);
std::stringstream stream;
stream << std::put_time(std::localtime(&time), "%F_%T");
std::cout << stream.str() << std::endl;
}
时区问题?你在什么时区?夏令时?你有没有检查过'tm'结构的细节(例如在调试器中)? –
1小时的差距是有道理的...我没有得到的是1470年。 – pah
@JoachimPileborg它在同一台机器上。但如何使它独立于时区。 – Christophe