00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029 #ifndef TNTDB_TIME_H
00030 #define TNTDB_TIME_H
00031
00032 #include <string>
00033
00034 namespace tntdb
00035 {
00039 class Time
00040 {
00041 short hour;
00042 unsigned short minute;
00043 unsigned short second;
00044 unsigned short millis;
00045
00046 public:
00048 Time()
00049 : hour(-1),
00050 minute(0),
00051 second(0),
00052 millis(0)
00053 { }
00054
00057 Time(unsigned short hour_,
00058 unsigned short minute_,
00059 unsigned short second_,
00060 unsigned short millis_ = 0)
00061 : hour(hour_),
00062 minute(minute_),
00063 second(second_),
00064 millis(millis_)
00065 { }
00066
00067 static Time localtime();
00068 static Time gmtime();
00069
00071 unsigned short getHour() const { return static_cast<unsigned short>(hour); }
00073 unsigned short getMinute() const { return minute; }
00075 unsigned short getSecond() const { return second; }
00077 unsigned short getMillis() const { return millis; }
00078
00079 bool isNull() const { return hour < 0; }
00080
00083 void set(unsigned short hour_,
00084 unsigned short minute_,
00085 unsigned short second_,
00086 unsigned short millis_ = 0)
00087 {
00088 hour = static_cast<short>(hour_);
00089 minute = minute_;
00090 second = second_;
00091 millis = millis_;
00092 }
00093
00095 std::string getIso() const;
00098 static Time fromIso(const std::string& s);
00099
00100 bool operator== (const Time& dt) const
00101 { return hour == dt.hour
00102 && minute == dt.minute
00103 && second == dt.second
00104 && millis == dt.millis; }
00105
00106 bool operator!= (const Time& dt) const
00107 { return !operator==(dt); }
00108
00109 bool operator< (const Time& dt) const
00110 {
00111 return hour < dt.hour ? true
00112 : hour > dt.hour ? false
00113 : minute < dt.minute ? true
00114 : minute > dt.minute ? false
00115 : second < dt.second ? true
00116 : second > dt.second ? false
00117 : millis < dt.millis;
00118 }
00119
00120 bool operator> (const Time& dt) const
00121 { return dt < *this; }
00122
00123 bool operator<= (const Time& dt) const
00124 { return !(*this > dt); }
00125
00126 bool operator>= (const Time& dt) const
00127 { return !(*this < dt); }
00128 };
00129 }
00130
00131 #endif // TNTDB_TIME_H
00132