Boost logo

Boost Users :

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


Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net