40 #define SECSPERMIN (60)
41 #define MINSPERHOUR (60)
42 #define SECSPERHOUR (SECSPERMIN * MINSPERHOUR)
43 #define HOURSPERDAY (24)
44 #define SECSPERDAY (SECSPERMIN * MINSPERHOUR * HOURSPERDAY)
45 #define DAYSPERWEEK (7)
46 #define MONETHSPERYEAR (12)
47 #define DAYSPERYEAR (365)
48 #define DAYSPERLEAPYEAR (366)
52 {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31},
53 {31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31},
66 static void GetDMLY(
int dayOff,
struct tm *pTime)
68 bool YearFound =
false;
69 int daysYear = dayOff;
70 int leapYear, curLeapYear, year =
TM_YEAR_BASE, monthYear = 0;
71 bool MonthFound =
false;
74 if ((year % 4) == 0) {
82 while (YearFound ==
false) {
83 if ((year % 4) == 0) {
94 if (dayOff > daysYear) {
100 curLeapYear = leapYear;
106 pTime->tm_yday = dayOff;
109 while (MonthFound ==
false) {
110 if ((dayOff + 1) >
daysPerMonth[curLeapYear][monthYear]) {
121 pTime->tm_mday = dayOff + 1;
122 pTime->tm_mon = monthYear;
132 int daySeconds, dayNum;
139 pTime->tm_sec = daySeconds % 60;
157 uint32_t dayOff, monthOff, monthCur, rtcTicks = 0;
160 if ((year % 4) == 0) {
169 if ((year % 4) == 0) {
185 dayOff = (uint32_t) pTime->tm_mday - 1;
186 monthOff = (uint32_t) pTime->tm_mon;
189 for (monthCur = 0; monthCur < monthOff; monthCur++) {
197 rtcTicks += (uint32_t) (pTime->tm_hour *
SECSPERHOUR);
198 rtcTicks += (uint32_t) (pTime->tm_min *
SECSPERMIN);
199 rtcTicks += (uint32_t) pTime->tm_sec;