]> git.tdb.fi Git - libs/core.git/blobdiff - source/time/datetime.h
Add support for time zones
[libs/core.git] / source / time / datetime.h
index 57ca89d8280535eea94efa301f750308688f9196..5f9e8c65706394f102cec45aa9c437d9db363864 100644 (file)
@@ -3,6 +3,7 @@
 #define MSP_TIME_DATETIME_H_
 
 #include <string>
+#include "timezone.h"
 #include "types.h"
 
 namespace Msp {
@@ -24,6 +25,7 @@ class DateTime
 {
 public:
        DateTime(const TimeStamp &);
+       DateTime(const TimeStamp &, const TimeZone &);
        DateTime(int, unsigned char, unsigned char);
        DateTime(int, unsigned char, unsigned char, unsigned char, unsigned char, unsigned char);
        DateTime(int, unsigned char, unsigned char, unsigned char, unsigned char, unsigned char, unsigned);
@@ -37,9 +39,13 @@ public:
        unsigned      get_usec() const   { return usec; }
 
        void add_days(int);
+       void set_timezone(const TimeZone &);
+       void convert_timezone(const TimeZone &);
 
        DateTime operator+(const TimeDelta &) const;
        DateTime &operator+=(const TimeDelta &);
+       DateTime operator-(const TimeDelta &) const;
+       DateTime &operator-=(const TimeDelta &);
 
        bool operator==(const DateTime &d) const { return cmp(d)==0; }
        bool operator!=(const DateTime &d) const { return cmp(d)!=0; }
@@ -51,6 +57,7 @@ public:
        int cmp(const DateTime &) const;
        TimeStamp get_timestamp() const;
        std::string format(const std::string &) const;
+       std::string format_rfc3339() const;
 private:
        int           year;
        unsigned char month;
@@ -59,7 +66,10 @@ private:
        unsigned char minute;
        unsigned char second;
        unsigned      usec;
+       TimeZone      zone;
 
+       void init(const TimeStamp &);
+       void init(int, unsigned char, unsigned char, unsigned char, unsigned char, unsigned char, unsigned);
        void add_raw(RawTime);
        void normalize();
        void validate() const;