10 #ifndef __PION_PIONDATETIME_HEADER__
11 #define __PION_PIONDATETIME_HEADER__
17 #include <boost/date_time/posix_time/posix_time.hpp>
18 #include <boost/date_time/gregorian/greg_date.hpp>
19 #include <pion/PionConfig.hpp>
41 static inline boost::uint32_t to_time_t(
const PionDateTime& t)
43 static const boost::posix_time::ptime start(boost::gregorian::date(1970,1,1));
44 return (t-start).total_seconds();
80 template <
class charT,
class traits>
82 input.imbue(std::locale(input.getloc(),
new boost::posix_time::time_input_facet(m_format.c_str())));
92 template <
class charT,
class traits>
94 output.imbue(std::locale(output.getloc(),
new boost::posix_time::time_facet(m_format.c_str())));
105 m_input_stream.str(str);
116 m_input_stream.str(str);
128 m_input_stream.str(str);
141 m_input_stream.str(str);
153 m_output_stream.str(
"");
154 m_output_stream << t;
155 str = m_output_stream.str();
165 m_output_stream.str(
"");
166 m_output_stream << t;
167 return m_output_stream.str();
173 m_input_stream.imbue(std::locale(m_input_stream.getloc(),
new boost::posix_time::time_input_facet(m_format.c_str())));
174 m_output_stream.imbue(std::locale(m_output_stream.getloc(),
new boost::posix_time::time_facet(m_format.c_str())));
178 inline const std::string&
getFormat(
void)
const {
return m_format; }
184 std::string m_format;
187 std::stringstream m_input_stream;
190 std::stringstream m_output_stream;
void fromString(const std::string &str, PionDateTime &t)
void read(std::basic_istream< charT, traits > &input, PionDateTime &t)
std::string toString(const PionDateTime &t)
void fromString(const char *str, PionDateTime &t)
PionDateTime fromString(const char *str)
PionDateTime fromString(const std::string &str)
PionTimeFacet(void)
default constructor
void toString(std::string &str, const PionDateTime &t)
virtual ~PionTimeFacet(void)
virtual destructor
PionTimeFacet & operator=(const PionTimeFacet &f)
assignment operator
PionTimeFacet(const PionTimeFacet &f)
copy constructor
void setFormat(const std::string &format)
sets the format used for I/O (see boost::date_time docs)
void write(std::basic_ostream< charT, traits > &output, const PionDateTime &t)
const std::string & getFormat(void) const
returns the format used for I/O
boost::posix_time::ptime PionDateTime
PionDateTime is a typedef for boost::posix_time::ptime.
PionTimeFacet(const std::string &format)