在我的c ++软件中,我在某些部分和当地时间都使用过Boost。 好的,现在我的问题是检查我的机器是否处于活动状态是否正常。
使用以下代码部分,我只能知道与UTC时间的差异。在我的情况下,差异是2小时,因为DST活跃
ptime tLoc = second_clock::local_time();
ptime tUTC = second_clock::universal_time();
time_duration tDiff = tUTC - tLoc;
local_time_zone = tDiff.hours();
我认为布尔函数has_dst()可以帮助,对吗?
我的系统是Debian GNU / Linux。
由于
答案 0 :(得分:2)
答案 1 :(得分:1)
我相信您正在寻找的功能是local_date_time_base<>::is_dst()
。 Boost.DateTime中的所有date_time数据类型都派生自local_date_time_base<>
。以下内容应该为您提供所需的结果:
namespace lt = boost::local_time;
// for example, use central time zone
lt::time_zone_ptr zone(new lt::posix_time_zone(
"CST-06:00:00CDT+01:00:00,M3.2.0/02:00:00,M11.1.0/02:00:00"));
lt::local_date_time tloc = lt::local_sec_clock::local_time(zone);
std::cout << "I'm " << (tloc.is_dst() ? "" : "not ") << "in DST";