Create a time object from an OLE automation date value.
Create a time object from an OLE automation date value. An OLE automation date is implemented as a floating-point number * whose value is the number of days from midnight, 30 December 1899.
53 typedef typename time_type::date_type date_type;
54 typedef typename time_type::date_duration_type date_duration_type;
55 typedef typename time_type::time_duration_type time_duration_type;
56 using boost::math::modf;
58 static const date_type base_date(1899, Dec, 30);
59 static const time_type base_time(base_date, time_duration_type(0,0,0));
61 int dayOffset, hourOffset, minuteOffset, secondOffset;
62 double fraction = fabs(modf(oa_date, &dayOffset)) * 24;
63 fraction = modf(fraction, &hourOffset) * 60;
64 fraction = modf(fraction, &minuteOffset) * 60;
65 modf(fraction, &secondOffset);
66 time_type t(base_time);
67 t += time_duration_type(hourOffset, minuteOffset, secondOffset);
68 t += date_duration_type(dayOffset);