Commander
Pirx wrote:
------------------------------------------
Would be interesting whats your format string looks like.
Not all format flags work with all date_time classes. %z (Time zone) for instance
works only with local_date_time.
------------------------------------------
It
seems that no matter what formatting I try to use, it doesn’t work.
Example:
TimeConverter
sampleFile.txt %d:%m:%Y_%H:%M:%S %m:%d:%Y_%H:%M:%S
sampleFile.txt:
05:01:2007_23:08:02
06:01:2007_23:09:04
expected
output: (month and day positions switched)
2007-Jan-05
23:08:02
01:05:2007_23:08:02
2007-Jan-06
23:09:04
01:06:2007_23:09:04
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
Code
is below
#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];
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;
string
s1 = boost::posix_time::to_simple_string(p);
cout<<s1<<"\n";
ss.str("");
ss<<p;
string
s2 = ss.str();
cout<<s2<<"\n";
std::ws(in);
ss.str("");
}
}