Самый простой способ получить текущее время в текущем часовом поясе с помощью повышения:: date_time?

Если я делаю date +%H-%M-%S на командной строке (Debian/Lenny) я получаю удобное для пользователя (не UTC, не DST меньше, время, которое нормальный человек имеет на их наручных часах), распечатанное время.

С чем самый простой путь состоит в том, чтобы получить то же самое boost::date_time ?

Если я делаю это:

std::ostringstream msg;

boost::local_time::local_date_time t = 
  boost::local_time::local_sec_clock::local_time(
    boost::local_time::time_zone_ptr()
  );

boost::local_time::local_time_facet* lf(
  new boost::local_time::local_time_facet("%H-%M-%S")
);

msg.imbue(std::locale(msg.getloc(),lf));
msg << t;

Затем msg.str() на час ранее, чем время, которое я хочу видеть. Я не уверен, является ли это вызвано тем, что это показывает UTC или локальное время часового пояса без исправления DST (я нахожусь в Великобритании).

К чему самый простой путь состоит в том, чтобы изменить вышеупомянутое для получения, DST исправил локальное время часового пояса? У меня есть идея, которую это включает boost::date_time:: c_local_adjustor но не может изобразить его из примеров.

12
задан timday 10 April 2010 в 10:00
поделиться

1 ответ

Это делает то, что я хочу:

  namespace pt = boost::posix_time;
  std::ostringstream msg;
  const pt::ptime now = pt::second_clock::local_time();
  pt::time_facet*const f = new pt::time_facet("%H-%M-%S");
  msg.imbue(std::locale(msg.getloc(),f));
  msg << now;
17
ответ дан 2 December 2019 в 07:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: