Boost: как распечатать/преобразовать posix_time::ptime в миллисекундах из эпохи?

У меня возникли проблемы с преобразованием posix_time::ptime в отметку времени, представленную time_t или posix_time::milliseconds, или любым другим подходящим типом, который можно легко распечатать (из эпохи).

На самом деле мне нужно просто напечатать отметку времени, представленную posix_time::ptime в миллисекундах, поэтому, если есть простой способ печати в этом формате, мне на самом деле не нужно преобразование.


person eold    schedule 09.04.2011    source источник


Ответы (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";
  }
person Robᵩ    schedule 10.04.2011
comment
Здесь стоит отметить, что информация о смещении часового пояса, найденная в pt, повлияет на результат. Например, если pt был получен с помощью microsec_clock::universal_time(), вы получите другой ответ, чем если бы вы сделали microsec_clock::local_time(). - person Ben; 30.01.2012