|
Boost Users : |
From: d_zakaib (d_zakaib_at_[hidden])
Date: 2003-05-16 17:52:56
I have written a function to convert a posix_time::ptime to a windows
FILETIME (which is in essence a 64-bit value counting 100-nanosecond
intervals since Jan 01, 1601).
In order to do so, I do a time difference between
the ptime and a time setup to the FILETIME reference time. To convert
from this time_duration to the FILETIME count, I use
time_duration::rep_type::ticks_per_second. Since this does not seem to
be documented I just wanted to make sure I was using it correctly (or
if I should be using it at all). Here is my code (which seems to work):
const ULONGLONG nanosecPerFileTimeUnit = 100;
using namespace boost::posix_time;
using namespace boost::gregorian;
FILETIME toFileTime
(
const ptime& time
)
{
ptime refTime(date(1601,Jan,01));
time_duration sinceRefDate = time - refTime;
ULARGE_INTEGER durationInFileTimeUnits;
const ULONGLONG timeDurTicksPerSec =
time_duration::rep_type::ticks_per_second;
const ULONGLONG fileTimeUnitsPerTimeDurTick =
(nanosecPerSec/timeDurTicksPerSec) / nanosecPerFileTimeUnit;
durationInFileTimeUnits.QuadPart =
sinceRefDate.ticks()*fileTimeUnitsPerTimeDurTick ;
FILETIME ft;
ft.dwLowDateTime = durationInFileTimeUnits.LowPart;
ft.dwHighDateTime = durationInFileTimeUnits.HighPart;
return ft;
}
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