Я пытаюсь преобразовать 2014-08-19T10: 05: 33Z в time_t.Как преобразовать временный XML-тип dateTime в time_t с C++
Мой код результаты: 1408435533
std::string expirationTime("2014-08-19T10:05:33Z");
struct tm tm;
memset(&tm, 0, sizeof(tm));
strptime(expirationTime.c_str(), "%Y-%m-%dT%TZ", &tm);
time_t timeStamp = mktime(&tm);
printf("time_t for %s is %ld \n\n", expirationTime.c_str(), timeStamp);
Результат:
time_t for 2014-08-19T10:05:33Z is 1408435533
Но когда я использую онлайн конвертер эпохальное я получаю следующее:
1408435533
Is equivalent to:
08/19/2014 @ 8:05am (UTC)
2014-08-19T08:05:33+00:00 in ISO 8601
, который, кажется, быть неправильным, так как разница в 2 часа.
Одумались ли вы на ваш часовой пояс? вы можете сказать, что ваш код изменяет время с текущим часовым поясом (т. е. UTC + смещение). Результат онлайн для UTC. – Damon
Код, как показано выше, не изменяет время. На основе строки, представленной «2014-08-19T10: 05: 33Z», как я могу извлечь смещение часового пояса? Спасибо! – gliatsos
Вы можете попробовать конвертировать текущую временную эпоху с кодом и онлайн-конвертером. Сравните эти результаты. Если разница соответствует смещению для вашего часового пояса, просто вычтите его. – Damon