我正在努力弄清楚如何使用boost :: date_time预制转换。 我想将从Unix时代(1970年1月1日的00:00)测量的毫秒值转换为人类可读的字符串 - 例如:2/13/2012 15:20:11
将是理想的。将毫秒UTC转换为人类可读Date_Time
我已经尝试了一些我见过的std C++/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
变量,但我不知道为什么。任何人都可以将我指向正确的方向吗?任何帮助深表感谢!!
推进方案[1] [1]:http://stackoverflow.com/questions/8916071 /转换日期时间到不同时区在C升压/ 9274998#9274998 – 2012-02-14 23:27:00