]> pilppa.org Git - lib1wire.git/blobdiff - src/Date.cc
Several data read and store fixes.
[lib1wire.git] / src / Date.cc
index 8c03c5bd661e6ed7a5c371037ef4e0923b268af2..e82ee999edc8dad3c321c7de7cda3d54558ec974 100644 (file)
@@ -27,7 +27,7 @@ Date::Date() {
        time(&wtime);
        ltime   = localtime(&wtime);
        year    = 1900 + ltime->tm_year;
-       month   = ltime->tm_mon;
+       month   = ltime->tm_mon + 1;    // ltime-month: values 0 - 11...
        day     = ltime->tm_mday;
        hour    = ltime->tm_hour;
        min     = ltime->tm_min;
@@ -137,6 +137,60 @@ void Date::tomorrow() {
        }
 }
 
+void Date::next_hour() {
+       if ((hour >= 0) &&
+           (hour <= 24)) {
+               hour++;
+               if (hour > 24) {
+                       hour    = 0;
+                       tomorrow();
+               }
+       }
+}
+
+void Date::inc_minutes(int minutes) {
+       int     day_c;
+       int     hour_c;
+       int     ii;
+
+       day_c   = minutes / 1440;
+       minutes = minutes - day_c * 1440;
+       hour_c  = minutes / 60;
+       minutes = minutes - hour_c * 60;
+       for (ii = 0; ii < day_c; ii++) {
+               tomorrow();
+       }
+       for (ii = 0; ii < hour_c; ii++) {
+               hour++;
+               if (hour > 24) {
+                       hour    = 0;
+                       tomorrow();
+               }
+       }
+       min     = min + minutes;
+       if (min >= 60) {
+               min     = min % 60;
+               hour++;
+               if (hour > 24) {
+                       hour    = 0;
+                       tomorrow();
+               }
+       }
+}
+
+void Date::inc_seconds(int seconds) {
+       int     min_c;
+
+       min_c   = seconds / 60;
+       seconds = seconds - min_c * 60;
+       inc_minutes(min_c);
+       sec     = sec + seconds;
+       if (sec >= 60) {
+               sec     = sec % 60;
+               inc_minutes(1);
+       }
+}
+
 string Date::to_string() {
        char    buffer[30];
        string  ret_val;