While doing some testing I've come across what I consider a bug in the boost::posix::from_time_t function.  I'm running this on Visual studio 2005 due to needing to deal with some legacy code.
I'm using boost v 1.39 -

Issue is that if you create a time_t representing a date after Jan 18 2038 using standard functions, when the time_t is loaded into the ptime it's rolling back to 1901.  In Visual studio 2005, time_t is 64 bit.

Example code:
 
#include <boost/date_time/posix_time/posix_time.hpp>
#include <boost/date_time/posix_time/time_parsers.hpp>
int main()
{
    struct tm timeStruct;
    boost::posix_time::ptime boostTime;
    time_t timeVal;

    memset(&timeStruct, 0, sizeof(timeStruct));
    timeStruct.tm_year = 138;
    timeStruct.tm_mon = 0;
    timeStruct.tm_mday = 18;
    timeVal = mktime(&timeStruct);
    std::cout << timeVal << std::endl;
    boostTime = boost::posix_time::from_time_t(timeVal);
    std::cout << boostTime << std::endl;

    memset(&timeStruct, 0, sizeof(timeStruct));
    timeStruct.tm_year = 138;
    timeStruct.tm_mon = 0;
    timeStruct.tm_mday = 19;
    timeVal = mktime(&timeStruct);
    std::cout << timeVal << std::endl;
    boostTime = boost::posix_time::from_time_t(timeVal);
    std::cout << boostTime << std::endl;

    return 0;
}

which outputs:
2147403600
2038-Jan-18 05:00:00
2147490000
1901-Dec-13 22:31:44

which is not quite the result I was hoping for.

Any suggestions other than not using time_t? ( It's been considered and rejected as a possibility for now)

Thanks in advance
Scott V