开发者

Daylight saving time of current tz

开发者 https://www.devze.com 2023-01-03 14:43 出处:网络
in my c++ software I\'ve used Boost in some parts and also for the开发者_开发知识库 local time.

in my c++ software I've used Boost in some parts and also for the开发者_开发知识库 local time. OK, now my problem is to make a check if in my machine is active or not the DST.

With the follow part of code I can know only the difference from the UTC time. In my case the difference is 2 hours because is active the DST

ptime tLoc = second_clock::local_time();
ptime tUTC = second_clock::universal_time();
time_duration tDiff = tUTC - tLoc;
local_time_zone = tDiff.hours();

I think that the boolean funcion has_dst() can help, right?

My system is Debian GNU/Linux.

Thanks


Look at plain C functions in time.h/ctime

localtime will return a struct tm*

struct tm has as its last field a flag telling if it is under DST or not.


I believe the function you are looking for is local_date_time_base<>::is_dst(). All date_time data types in Boost.DateTime are derived from local_date_time_base<>. The following should give you the required result:

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";
0

精彩评论

暂无评论...
验证码 换一张
取 消