AceTime  0.3
Date and time classes for Arduino that support timezones from the TZ Database, and a system clock that can synchronize from an NTP server or an RTC chip.
local_date_mutation.h
1 #ifndef ACE_TIME_LOCAL_DATE_MUTATION_H
2 #define ACE_TIME_LOCAL_DATE_MUTATION_H
3 
4 #include <stdint.h>
5 #include "LocalDate.h"
6 
7 namespace ace_time {
8 namespace local_date_mutation {
9 
14 inline void incrementOneDay(LocalDate& ld) {
15  uint8_t day = ld.day() + 1;
16  uint8_t month = ld.month();
17  int8_t yearTiny = ld.yearTiny();
18 
19  if (day > LocalDate::daysInMonth(ld.year(), month)) {
20  day = 1;
21  month++;
22  if (month > 12) {
23  month = 1;
24  yearTiny++;
25  }
26  }
27  ld.day(day);
28  ld.month(month);
29  ld.yearTiny(yearTiny);
30 }
31 
36 inline void decrementOneDay(LocalDate& ld) {
37  uint8_t day = ld.day() - 1;
38  uint8_t month = ld.month();
39  int8_t yearTiny = ld.yearTiny();
40 
41  if (day == 0) {
42  if (month == 1) {
43  day = 31;
44  month = 12;
45  yearTiny--;
46  } else {
47  month--;
48  day = LocalDate::daysInMonth(ld.year(), month);
49  }
50  }
51  ld.day(day);
52  ld.month(month);
53  ld.yearTiny(yearTiny);
54 }
55 
56 }
57 }
58 
59 #endif
static uint8_t daysInMonth(int16_t year, uint8_t month)
Return the number of days in the current month.
Definition: LocalDate.h:204