]> git.tdb.fi Git - libs/core.git/blobdiff - source/time/datetime.cpp
Change exception classes and messages in DateTime
[libs/core.git] / source / time / datetime.cpp
index 6617f862b0bdb705dd73fbb1f7b904a7e5761da1..23d0f2a5e7e223a3cdae6af23e6da121ab87d167 100644 (file)
@@ -8,7 +8,7 @@ Distributed under the LGPL
 #include <cstdlib>
 #include <sstream>
 #include <iomanip>
-#include "../core/except.h"
+#include <stdexcept>
 #include "datetime.h"
 #include "timestamp.h"
 #include "units.h"
@@ -77,6 +77,42 @@ DateTime::DateTime(int y, unsigned char m, unsigned char d, unsigned char h, uns
        init(y, m, d, h, n, s, u);
 }
 
+void DateTime::init(const TimeStamp &ts)
+{
+       year = 1970;
+       month = 1;
+       mday = 1;
+       hour = 0;
+       minute = 0;
+       second = 0;
+       usec = 0;
+       add_raw(ts.raw());
+}
+
+void DateTime::init(int y, unsigned char m, unsigned char d, unsigned char h, unsigned char n, unsigned char s, unsigned u)
+{
+       year = y;
+       month = m;
+       mday = d;
+       hour = h;
+       minute = n;
+       second = s;
+       usec = u;
+
+       if(usec>=1000000)
+               throw out_of_range("DateTime::DateTime usec");
+       if(second>=60)
+               throw out_of_range("DateTime::DateTime second");
+       if(minute>=60)
+               throw out_of_range("DateTime::DateTime minute");
+       if(hour>=24)
+               throw out_of_range("DateTime::DateTime hour");
+       if(month<1 || month>12)
+               throw out_of_range("DateTime::DateTime month");
+       if(mday<1 || mday>month_days(year, month))
+               throw out_of_range("DateTime::DateTime mday");
+}
+
 void DateTime::add_days(int days)
 {
        int new_year = year;
@@ -203,7 +239,7 @@ int DateTime::cmp(const DateTime &dt) const
 TimeStamp DateTime::get_timestamp() const
 {
        if(year<-289701 || year>293641)
-               throw InvalidState("DateTime is not representable as a TimeStamp");
+               throw range_error("DateTime::get_timestamp");
 
        RawTime raw = (((hour*60LL)+minute)*60+second)*1000000+usec;
        int days = (year-1970)*365;
@@ -272,30 +308,6 @@ string DateTime::format_rfc3339() const
        return result;
 }
 
-void DateTime::init(const TimeStamp &ts)
-{
-       year = 1970;
-       month = 1;
-       mday = 1;
-       hour = 0;
-       minute = 0;
-       second = 0;
-       usec = 0;
-       add_raw(ts.raw());
-}
-
-void DateTime::init(int y, unsigned char m, unsigned char d, unsigned char h, unsigned char n, unsigned char s, unsigned u)
-{
-       year = y;
-       month = m;
-       mday = d;
-       hour = h;
-       minute = n;
-       second = s;
-       usec = u;
-       validate();
-}
-
 void DateTime::add_raw(RawTime raw)
 {
        int days = static_cast<int>(raw/86400000000LL);
@@ -337,21 +349,5 @@ void DateTime::normalize()
        }
 }
 
-void DateTime::validate() const
-{
-       if(usec>=1000000)
-               throw InvalidParameterValue("Microseconds out of range");
-       if(second>=60)
-               throw InvalidParameterValue("Seconds out of range");
-       if(minute>=60)
-               throw InvalidParameterValue("Minutes out of range");
-       if(hour>=24)
-               throw InvalidParameterValue("Hours out of range");
-       if(month<1 || month>12)
-               throw InvalidParameterValue("Month out of range");
-       if(mday<1 || mday>month_days(year, month))
-               throw InvalidParameterValue("Day of month out of range");
-}
-
 } // namespace Time
 } // namespace Msp