#define MSP_TIME_DATETIME_H_
#include <string>
+#include <msp/core/mspcore_api.h>
#include "timezone.h"
#include "rawtime.h"
are relatively slow. For purposes of internal scheduling in a program, a
TimeStamp is a better choice.
*/
-class DateTime
+class MSPCORE_API DateTime
{
private:
- int year;
- unsigned char month;
- unsigned char mday;
- unsigned char hour;
- unsigned char minute;
- unsigned char second;
- unsigned usec;
+ int year = 1970;
+ unsigned char month = 1;
+ unsigned char mday = 1;
+ unsigned char hour = 0;
+ unsigned char minute = 0;
+ unsigned char second = 0;
+ unsigned usec = 0;
TimeZone zone;
public:
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);
-private:
- void init(const TimeStamp &);
- void init(int, unsigned char, unsigned char, unsigned char, unsigned char, unsigned char, unsigned);
-public:
+ 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; }
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