Если я делаю date +%H-%M-%S
в командной строке (Debian/Lenny), я получаю удобное для пользователя (не UTC, не DST-less, время, которое нормальный человек показывает на своих наручных часах) время.
Какой самый простой способ получить то же самое с 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 или местного часового пояса без поправки на летнее время (я нахожусь в Великобритании).
Каков самый простой способ изменить приведенное выше, чтобы получить время местного часового пояса с поправкой на летнее время? У меня есть идея, что это связано с boost::date_time:: c_local_adjustor
, но я не могу понять это из примеров.
boost::posix_time
для создания объекта времени из системных часов. Это отлично работает для местного времени (локальC
). Возможность построения времени для других часовых поясов зависит от того, какие локали у вас есть. - person Nate   schedule 12.04.2010