2011-04-09 162 views
2

我无法将posix_time :: ptime转换为由time_t或posix_time :: milliseconds表示的时间戳,或者可以轻松打印的任何其他适当类型(来自Epoch)。Boost:如何在Epoch中以毫秒为单位打印/转换posix_time :: ptime?

我实际上只需要以毫秒为单位打印由posix_time :: ptime表示的时间戳,所以如果有一种简单的方法以该格式打印,我实际上不需要转换。

回答

1

该代码将打印自1941-12-07T00:00:00以来的毫秒数。显然,你可以选择任何适合你需要的时代。

void print_ptime_in_ms_from_epoch(const boost::posix_time::ptime& pt) 
    { 
    using boost::posix_time::ptime; 
    using namespace boost::gregorian; 
    std::cout << (pt-ptime(date(1941, Dec, 7))).total_milliseconds() << "\n"; 
    } 
+1

值得注意的是,在pt中找到的时区偏移信息会影响结果。例如,如果pt与microsec_clock :: universal_time()一起被抓取,您将得到与如果您使用microsec_clock :: local_time()不同的答案。 – Ben 2012-01-30 17:04:56

相关问题