Здравствуйте, collider, Вы писали:
C>как сконвертить boost::posix_time::ptime в FILETIME ?
Первый резалт в гуглопоиске
http://askldjd.wordpress.com/2011/02/04/convert-boostposix_timeptime-to-windows-filetime/
Только Путин, и никого кроме Путина! О Великий и Могучий Путин — царь на веки веков, навсегда!
Смотрю только Соловьева и Михеева, для меня это самые авторитетные эксперты.
КРЫМ НАШ! СКОРО И ВСЯ УКРАИНА БУДЕТ НАШЕЙ!
Здравствуйте, collider, Вы писали:
C>как сконвертить boost::posix_time::ptime в FILETIME ?
namespace TimeHelpers
{
typedef boost::posix_time::ptime Time_t;
namespace detail
{
static const int64_t _onesec_in100ns = (int64_t) 10000000;
inline FILETIME getFILETIMEFromYear(WORD year)
{
SYSTEMTIME s={0};
FILETIME f;
s.wYear = year;
s.wMonth = 1;
s.wDayOfWeek = 1;
s.wDay = 1;
::SystemTimeToFileTime( &s, &f );
return f;
}
inline int64_t FILETIME2int64(FILETIME f)
{
int64_t t;
t = f.dwHighDateTime;
t <<= 32;
t |= f.dwLowDateTime;
return t;
}
inline time_t getYdayFromSYSTEMTIME(const SYSTEMTIME* s)
{
int64_t t;
FILETIME f1, f2;
f1 = getFILETIMEFromYear( s->wYear );
SystemTimeToFileTime( s, &f2 );
t = FILETIME2int64(f2)-FILETIME2int64(f1);
return (time_t)((t/_onesec_in100ns)/(60*60*24));
}
}
inline Time_t FromSysTime(const SYSTEMTIME& systemTime)
{
std::tm tmStruct;
tmStruct.tm_year = systemTime.wYear - 1900;
tmStruct.tm_mon = systemTime.wMonth- 1;
tmStruct.tm_wday = systemTime.wDayOfWeek;
tmStruct.tm_mday = systemTime.wDay;
tmStruct.tm_yday = static_cast<int>(detail::getYdayFromSYSTEMTIME(&systemTime));
tmStruct.tm_hour = systemTime.wHour;
tmStruct.tm_min = systemTime.wMinute;
//tmStruct.tm_sec = systemTime.wSecond;
tmStruct.tm_sec = 0;
tmStruct.tm_isdst = 0;
return boost::posix_time::ptime_from_tm(tmStruct);
}
inline Time_t FromFileTime(const FILETIME& fileTime)
{
SYSTEMTIME systemTime = { 0 };
::FileTimeToSystemTime(&fileTime, &systemTime);
return FromSysTime(systemTime);
}
inline SYSTEMTIME ToSysTime(const Time_t& posixTime)
{
std::tm tmStruct = boost::posix_time::to_tm(posixTime);
SYSTEMTIME s;
s.wYear = tmStruct.tm_year + 1900;
s.wMonth = tmStruct.tm_mon + 1;
s.wDayOfWeek = tmStruct.tm_wday;
s.wDay = tmStruct.tm_mday;
s.wHour = tmStruct.tm_hour;
s.wMinute = tmStruct.tm_min;
//s.wSecond = tmStruct.tm_sec;
s.wSecond = 0;
s.wMilliseconds = 0;
return s;
}
inline FILETIME ToFileTime(const Time_t& posixTime)
{
SYSTEMTIME sTime = ToSysTime(posixTime);
FILETIME fTime = { 0 };
::SystemTimeToFileTime(&sTime, &fTime);
return fTime;
}
}
"Дайте мне возможность выпускать и контролировать деньги в государстве и – мне нет дела до того, кто пишет его законы." (c) Мейер Ансельм Ротшильд , банкир.