diff options
Diffstat (limited to 'lib')
-rw-r--r-- | lib/timeutils/timeutils.c | 7 | ||||
-rw-r--r-- | lib/timeutils/timeutils.h | 2 |
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 |