2009-07-31 8 views

Antwort

1

This wird Ihnen helfen, tm-Struktur in posix_time-Objekt zu konvertieren. Suchen Sie nach mehr Conversions.

6

bisschen Schmerzen, aber es scheint, wie Sie über posix_time :: ptime gehen:

using namespace boost; 
time_t rawtime; 
time(&rawtime); 
struct tm* timeinfo = localtime(&rawtime); 
posix_time::ptime my_ptime = posix_time::ptime_from_tm(*timeinfo); 
local_time::time_zone_ptr zone(new local_time::posix_time_zone("GMT")); 
local_time::local_date_time my_ldt(my_ptime, zone); 
std::cout << "local_date_time: " << my_ldt << std::endl; 
+0

Leider ist die Zeitzone hart Codes diese – Richard

0
#define MSEC_TICKS_PER_SECOND 1000 
boost::local_time::local_date_time ConvertTimeZone(
    const std::tm &from_tm, 
    const int16_t &from_milliseconds, 
    const boost::local_time::time_zone_ptr &from_tz, 
    const boost::local_time::time_zone_ptr &to_tz) { 
    using boost::gregorian::date; 
    using boost::posix_time::time_duration; 
    using boost::local_time::local_date_time; 
    local_date_time from_ldt(
     date(from_tm.tm_year + 1900, 
      from_tm.tm_mon + 1, 
      from_tm.tm_mday), 
     time_duration(from_tm.tm_hour, 
        from_tm.tm_min, 
        from_tm.tm_sec, 
        time_duration::ticks_per_second()/MSEC_TICKS_PER_SECOND * 
        from_milliseconds), 
     from_tz, 
     boost::local_time::local_date_time::NOT_DATE_TIME_ON_ERROR); 
    return from_ldt.local_time_in(to_tz); 
} 
#undef MSEC_TICKS_PER_SECOND