boost::date_timeを使用して変換を実行する方法を理解するのに苦労しています。Unixエポック(00:00、1970年1月1日)から測定されたミリ秒の値を人間が読める文字列に変換したいのですが、次のようなもの2/13/2012 15:20:11
が理想的です。
私はいくつかのstdC++ / Boostの提案を試しましたが、まだ運がありませんでした。私が使用するコードは次のとおりです。
long long ticksFromEpoch = 1329117220501;
std::time_t tt = static_cast<time_t>(ticksFromEpoch);
boost::posix_time::ptime dt = boost::posix_time::from_time_t(tt);
// Create a time_zone_ptr for the desired time zone and use it to create a local_date_time
boost::local_time::time_zone_ptr zone(new boost::local_time::posix_time_zone("UTC"));
boost::local_time::local_date_time dt_with_zone(dt, zone);
std::stringstream strm;
strm.imbue(std::locale(std::cout.getloc(), new boost::local_time::local_time_facet("%Y-%m-%d %H:%M:%S"))); // 15:14
strm << dt_with_zone;
// Print the stream's content to the console
std::cout << strm.str() << std::endl;
出力は次のとおりです。2032-07-01 20:20:37
これは明らかに正しくありません。変数を正しく作成していないのticksFromEpoch
ではないかと思いますが、理由はわかりません。誰かが私を正しい方向に向けることができますか?どんな助けでも大歓迎です!!