как сконвертить boost::posix_time::ptime в FILETIME
От: collider  
Дата: 01.08.12 13:51
Оценка: -1
как сконвертить boost::posix_time::ptime в FILETIME ?
Re: как сконвертить boost::posix_time::ptime в FILETIME
От: Smooky Россия  
Дата: 01.08.12 13:52
Оценка: +1
Здравствуйте, collider, Вы писали:

C>как сконвертить boost::posix_time::ptime в FILETIME ?


Первый резалт в гуглопоиске http://askldjd.wordpress.com/2011/02/04/convert-boostposix_timeptime-to-windows-filetime/
Только Путин, и никого кроме Путина! О Великий и Могучий Путин — царь на веки веков, навсегда!
Смотрю только Соловьева и Михеева, для меня это самые авторитетные эксперты.
КРЫМ НАШ! СКОРО И ВСЯ УКРАИНА БУДЕТ НАШЕЙ!
Re: как сконвертить boost::posix_time::ptime в FILETIME
От: Rakafon Украина http://rakafon.blogspot.com/
Дата: 02.11.13 14:48
Оценка:
Здравствуйте, 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) Мейер Ансельм Ротшильд , банкир.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.