summaryrefslogtreecommitdiffstatshomepage
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/timeutils/timeutils.c7
-rw-r--r--lib/timeutils/timeutils.h2
2 files changed, 9 insertions, 0 deletions
diff --git a/lib/timeutils/timeutils.c b/lib/timeutils/timeutils.c
index af210d9943..7c74f5fc37 100644
--- a/lib/timeutils/timeutils.c
+++ b/lib/timeutils/timeutils.c
@@ -213,3 +213,10 @@ mp_uint_t timeutils_mktime_2000(mp_uint_t year, mp_int_t month, mp_int_t mday,
}
return timeutils_seconds_since_2000(year, month, mday, hours, minutes, seconds);
}
+
+// Calculate the weekday from the date.
+// The result is zero based with 0 = Monday.
+// by Michael Keith and Tom Craver, 1990.
+int timeutils_calc_weekday(int y, int m, int d) {
+ return ((d += m < 3 ? y-- : y - 2, 23 * m / 9 + d + 4 + y / 4 - y / 100 + y / 400) + 6) % 7;
+}
diff --git a/lib/timeutils/timeutils.h b/lib/timeutils/timeutils.h
index 2d40f773cc..66e2a77f13 100644
--- a/lib/timeutils/timeutils.h
+++ b/lib/timeutils/timeutils.h
@@ -100,4 +100,6 @@ static inline int64_t timeutils_nanoseconds_since_epoch_to_nanoseconds_since_197
#endif
+int timeutils_calc_weekday(int y, int m, int d);
+
#endif // MICROPY_INCLUDED_LIB_TIMEUTILS_TIMEUTILS_H