Boost logo

Boost Users :

Subject: [Boost-users] date_time question
From: Amadeus W.M. (amadeus84_at_[hidden])
Date: 2009-05-22 21:36:38


I have a file with tab separated entries like this:

1230735660 12/31/2008 10:01:00 8.94 277880
1230735729 12/31/2008 10:02:09 8.95 279693
1230735791 12/31/2008 10:03:11 8.95 284743

etc.

I don't assume which column represents the date so I read one line at the
time and test each token if it's a date in the format "%m/%d/%Y %H:%M:%S".

However, when I process the first token (1230735660) date_time thinks it's
a date in my format and returns

5660-Dec-07 00:00:00

How come? It seems to think that 3 is a separator. Could anyone please
shed some light? Thanks!

Here is a short program that exemplifies the problem:

// g++ -g -Wall -o dateIO -I/usr/local/include/boost-1_38 -L/usr/local/
lib/ dateIOTest.C -lboost_date_time-gcc43-mt-1_38

#include <iostream>
#include <sstream>
#include <cstdlib>
#include <string>
#include <boost/date_time/posix_time/posix_time.hpp>

using namespace std;
using namespace boost::posix_time;

int main(int argc, char * argv[])
{
    ptime pt;
    string datestr("1230735660");
    
    istringstream INSTR(datestr);
    time_input_facet * tifacet=new time_input_facet("%m/%d/%Y %H:%M:%S");
    locale loc(INSTR.getloc(),tifacet);
    INSTR.imbue(loc);
    INSTR >> pt;

    cout << pt << endl;

    return 0;
}


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