ProteoWizard
Functions
boost::date_time Namespace Reference

Functions

template<class time_type >
time_type time_from_OADATE (double oa_date)
 Create a time object from an OLE automation date value. More...
 

Function Documentation

§ time_from_OADATE()

template<class time_type >
time_type boost::date_time::time_from_OADATE ( double  oa_date)
inline

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.

Definition at line 51 of file DateTime.hpp.

52 {
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;
57 
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));
60 
61  int dayOffset, hourOffset, minuteOffset, secondOffset;
62  double fraction = fabs(modf(oa_date, &dayOffset)) * 24; // fraction = hours
63  fraction = modf(fraction, &hourOffset) * 60; // fraction = minutes
64  fraction = modf(fraction, &minuteOffset) * 60; // fraction = seconds
65  modf(fraction, &secondOffset);
66  time_type t(base_time);
67  t += time_duration_type(hourOffset, minuteOffset, secondOffset);
68  t += date_duration_type(dayOffset);
69  return t;
70 }