Я хочу сохранить строку времени даты в 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