方法1: C++11以降の標準ライブラリを使用する方法
#include <iostream>
#include <chrono>
#include <iomanip>
int main() {
std::string iso8601DateTime = "2024-02-02T12:34:56Z";
std::tm timeinfo = {};
std::istringstream iss(iso8601DateTime);
iss >> std::get_time(&timeinfo, "%Y-%m-%dT%H:%M:%SZ");
std::time_t timestamp = std::mktime(&timeinfo);
std::chrono::system_clock::time_point systemTime = std::chrono::system_clock::from_time_t(timestamp);
std::time_t systemTime_t = std::chrono::system_clock::to_time_t(systemTime);
std::cout << "SystemTime: " << std::put_time(std::localtime(&systemTime_t), "%Y-%m-%d %H:%M:%S") << std::endl;
return 0;
}
方法2: Boostライブラリを使用する方法(Boostが必要です)
#include <iostream>
#include <boost/date_time/posix_time/posix_time.hpp>
int main() {
std::string iso8601DateTime = "2024-02-02T12:34:56Z";
boost::posix_time::ptime systemTime = boost::posix_time::from_iso_string(iso8601DateTime);
std::cout << "SystemTime: " << systemTime << std::endl;
return 0;
}
上記のコード例では、ISO 8601形式の日時文字列をパースして、C++のstd::tm
オブジェクトやBoostのboost::posix_time::ptime
オブジェクトに変換しています。それぞれの方法は異なるライブラリを使用していますが、必要に応じて適切な方法を選択してください。