$include_dir="/home/hyper-archives/boost-users/include"; include("$include_dir/msg-header.inc") ?>
From: Jeff Garland (jeff_at_[hidden])
Date: 2007-01-12 18:03:05
debayan.bhattacharya_at_[hidden] wrote:
> Hi all,
>
> I need some help converting a boost::gregorian::date to struct tm in version 1.31. to_tm(date) function dont seems to work in this version.
>
> Your help is greatly appreciated.
I believe that function was added in 1.32. Here's how it's done:
//! Converts a date to a tm struct. Throws out_of_range exception if date
is a special value
inline
std::tm to_tm(const boost::gregorian::date& d)
{
if(d.is_pos_infinity() || d.is_neg_infinity() || d.is_not_a_date()){
std::string s("tm unable to handle date value of " + to_simple_string(d));
throw std::out_of_range(s);
}
std::tm datetm;
boost::gregorian::date::ymd_type ymd = d.year_month_day();
datetm.tm_year = ymd.year-1900;
datetm.tm_mon = ymd.month-1;
datetm.tm_mday = ymd.day;
datetm.tm_wday = d.day_of_week();
datetm.tm_yday = d.day_of_year()-1;
datetm.tm_hour = datetm.tm_min = datetm.tm_sec = 0;
datetm.tm_isdst = -1; // negative because not enough info to set tm_isdst
return datetm;
}
Jeff