]> git.tdb.fi Git - libs/core.git/blobdiff - source/time/datetime.h
Move non-oneliner functions out of RefPtr class declaration
[libs/core.git] / source / time / datetime.h
index f00d377875b3dc8a7c9719b0300644e341ba144b..b7f578cd9f71326ae510c0780c8714f195aa684d 100644 (file)
@@ -23,14 +23,14 @@ TimeStamp is a better choice.
 class DateTime
 {
 private:
-       int           year;
+       int year;
        unsigned char month;
        unsigned char mday;
        unsigned char hour;
        unsigned char minute;
        unsigned char second;
-       unsigned      usec;
-       TimeZone      zone;
+       unsigned usec;
+       TimeZone zone;
 
 public:
        DateTime(const TimeStamp &);
@@ -43,13 +43,15 @@ private:
        void init(int, unsigned char, unsigned char, unsigned char, unsigned char, unsigned char, unsigned);
 
 public:
-       int           get_year() const   { return year; }
-       unsigned char get_month() const  { return month; }
-       unsigned char get_mday() const   { return mday; }
-       unsigned char get_hour() const   { return hour; }
+       static DateTime parse_rfc3339(const std::string &);
+
+       int get_year() const { return year; }
+       unsigned char get_month() const { return month; }
+       unsigned char get_mday() const { return mday; }
+       unsigned char get_hour() const { return hour; }
        unsigned char get_minute() const { return minute; }
        unsigned char get_second() const { return second; }
-       unsigned      get_usec() const   { return usec; }
+       unsigned get_usec() const { return usec; }
 
        void add_days(int);
        void set_timezone(const TimeZone &);
@@ -80,6 +82,9 @@ private:
 inline void operator<<(LexicalConverter &c, const DateTime &d)
 { c.result(d.format_rfc3339()); }
 
+inline void operator>>(const LexicalConverter &c, DateTime &d)
+{ d = DateTime::parse_rfc3339(c.get()); }
+
 } // namespace Time
 } // namespace Msp