I’ve found the Date Time library incredibly useful for dealing with timestamps, but I can’t seem to get the output formatted the way I want. I’ve followed the example for the Date Time IO Tutorial (http://www.boost.org/doc/libs/1_39_0/doc/html/date_time/date_time_io.html#date_time.io_tutorial) but the output always comes out the same way. I’ve tried the following code with Visual Studio Express 2008 and g++ 4.2 on Solaris 10. I’m using Boost 1.39.0. Any help appreciated.

 

matthew

 

 

#include <fstream>

#include <functional>

#include <iostream>

#include <sstream>

#include "boost/date_time/gregorian/gregorian.hpp"

#include "boost/date_time/posix_time/posix_time.hpp"

#include "boost/date_time/local_time/local_time.hpp"

 

using namespace std;

 

int main(int argc, char** argv)

{

      stringstream ss;

 

      ifstream in( argv[1] );

 

      string inputFormat = argv[2];

      string outputFormat = argv[3]; //I want my own formatting.

           

      boost::local_time::local_time_facet* output_facet =

            new boost::local_time::local_time_facet();

           

      boost::local_time::local_time_input_facet* input_facet =

            new boost::local_time::local_time_input_facet();

           

      ss.imbue(locale(locale::classic(), output_facet));

      ss.imbue(locale(ss.getloc(), input_facet));

     

      output_facet->format( outputFormat.c_str() );

      input_facet->format( inputFormat.c_str() );

 

      while ( !in.eof() )

      {

            string s;

            getline( in, s );

            ss<<s;

            boost::posix_time::ptime p;

            ss>>p;  //This works fine.

 

            string s1 = boost::posix_time::to_simple_string(p);

     

            cout<<s1<<"\n";

           

            ss.str("");

            ss<<p; //I don’t get my format.

            string s2 = ss.str();

           

            cout<<s2<<"\n";

 

            std::ws(in);

            ss.str("");

      }

}

 

----Input File----

05:01:2007_23:08:02

06:01:2007_23:09:04

07:01:2007_16:32:58

07:01:2007_18:51:42

07:01:2007_19:51:27

 

----Output----

2007-Jan-05 23:08:02

2007-Jan-05 23:08:02

2007-Jan-06 23:09:04

2007-Jan-06 23:09:04

2007-Jan-07 16:32:58

2007-Jan-07 16:32:58

2007-Jan-07 18:51:42

2007-Jan-07 18:51:42

2007-Jan-07 19:51:27

2007-Jan-07 19:51:27