AceTime  1.0
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.
zoned_date_time_mutation.h
1 /*
2  * MIT License
3  * Copyright (c) 2018 Brian T. Park
4  */
5 
6 #ifndef ACE_TIME_ZONED_DATE_TIME_MUTATION_H
7 #define ACE_TIME_ZONED_DATE_TIME_MUTATION_H
8 
9 #include <stdint.h>
10 #include "common/util.h"
11 #include "ZonedDateTime.h"
12 
13 namespace ace_time {
14 namespace zoned_date_time_mutation {
15 
42 inline void incrementYear(ZonedDateTime& dateTime) {
43  int8_t yearTiny = dateTime.yearTiny();
44  common::incrementMod(yearTiny, (int8_t) 100);
45  dateTime.yearTiny(yearTiny);
46 }
47 
49 inline void incrementMonth(ZonedDateTime& dateTime) {
50  uint8_t month = dateTime.month();
51  common::incrementMod(month, (uint8_t) 12, (uint8_t) 1);
52  dateTime.month(month);
53 }
54 
56 inline void incrementDay(ZonedDateTime& dateTime) {
57  uint8_t day = dateTime.day();
58  common::incrementMod(day, (uint8_t) 31, (uint8_t) 1);
59  dateTime.day(day);
60 }
61 
63 inline void incrementHour(ZonedDateTime& dateTime) {
64  uint8_t hour = dateTime.hour();
65  common::incrementMod(hour, (uint8_t) 24);
66  dateTime.hour(hour);
67 }
68 
70 inline void incrementMinute(ZonedDateTime& dateTime) {
71  uint8_t minute = dateTime.minute();
72  common::incrementMod(minute, (uint8_t) 60);
73  dateTime.minute(minute);
74 }
75 
76 }
77 }
78 
79 #endif