Преобразовать структуру tm в boost :: local_time :: local_date_time - PullRequest
4 голосов
/ 31 июля 2009

Как я могу создать boost::local_time::local_date_time объект из tm временной структуры?

Ответы [ 3 ]

6 голосов
/ 31 июля 2009

Немного боли, но похоже, что вам нужно пройти через posix_time :: ptime:

using namespace boost;
time_t rawtime;
time(&rawtime);
struct tm* timeinfo = localtime(&rawtime);
posix_time::ptime my_ptime = posix_time::ptime_from_tm(*timeinfo);
local_time::time_zone_ptr zone(new local_time::posix_time_zone("GMT"));
local_time::local_date_time my_ldt(my_ptime, zone);
std::cout << "local_date_time: " << my_ldt << std::endl;
1 голос
/ 31 июля 2009

Это поможет вам преобразовать структуру tm в объект posix_time. Поищите больше конверсий.

0 голосов
/ 20 апреля 2014
#define MSEC_TICKS_PER_SECOND 1000
boost::local_time::local_date_time ConvertTimeZone(
    const std::tm &from_tm,
    const int16_t &from_milliseconds,
    const boost::local_time::time_zone_ptr &from_tz,
    const boost::local_time::time_zone_ptr &to_tz) {
  using boost::gregorian::date;
  using boost::posix_time::time_duration;
  using boost::local_time::local_date_time;
  local_date_time from_ldt(
      date(from_tm.tm_year + 1900,
           from_tm.tm_mon + 1,
           from_tm.tm_mday),
      time_duration(from_tm.tm_hour,
                    from_tm.tm_min,
                    from_tm.tm_sec,
                    time_duration::ticks_per_second() / MSEC_TICKS_PER_SECOND *
                    from_milliseconds),
      from_tz,
      boost::local_time::local_date_time::NOT_DATE_TIME_ON_ERROR);
  return from_ldt.local_time_in(to_tz);
}
#undef MSEC_TICKS_PER_SECOND
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...