From 2fb903a11c1fb7426ffc3afdabc9504767659e34 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Roger=20Vil=C3=A0?= Date: Wed, 4 Mar 2026 14:41:17 +0100 Subject: [PATCH] feat: next weekday methods --- python_carbon/__init__.py | 21 +++++++++++++++++++++ tests/test_python_carbon.py | 19 +++++++++++++++++++ 2 files changed, 40 insertions(+) diff --git a/python_carbon/__init__.py b/python_carbon/__init__.py index 05739f2..a3bb818 100644 --- a/python_carbon/__init__.py +++ b/python_carbon/__init__.py @@ -634,6 +634,27 @@ def next(self, weekday: int = None) -> 'Carbon': weekday = weekday if weekday is not None else datetime.now().weekday() return Carbon(self._date + timedelta(days=weekday - self._date.weekday() + 7)) + def nextMonday(self) -> 'Carbon': + return self.next(self.MONDAY) + + def nextTuesday(self) -> 'Carbon': + return self.next(self.TUESDAY) + + def nextWednesday(self) -> 'Carbon': + return self.next(self.WEDNESDAY) + + def nextThursday(self) -> 'Carbon': + return self.next(self.THURSDAY) + + def nextFriday(self) -> 'Carbon': + return self.next(self.FRIDAY) + + def nextSaturday(self) -> 'Carbon': + return self.next(self.SATURDAY) + + def nextSunday(self) -> 'Carbon': + return self.next(self.SUNDAY) + ########################## # datetime and timedelta # ########################## diff --git a/tests/test_python_carbon.py b/tests/test_python_carbon.py index cd9ac1c..a3504e8 100644 --- a/tests/test_python_carbon.py +++ b/tests/test_python_carbon.py @@ -186,6 +186,25 @@ def test_utc_converter(self) -> None: self.assertEqual(converted.toDatetime().tzname(), 'UTC') self.assertEqual(converted.toDateTimeString(), '2021-08-18 08:00:00') + def test_next_weekday_methods(self) -> None: + base = Carbon.parse('2021-08-18 12:34:56') + + self.assertEqual(base.nextMonday().toDateTimeString(), '2021-08-23 12:34:56') + self.assertEqual(base.nextTuesday().toDateTimeString(), '2021-08-24 12:34:56') + self.assertEqual(base.nextWednesday().toDateTimeString(), '2021-08-25 12:34:56') + self.assertEqual(base.nextThursday().toDateTimeString(), '2021-08-26 12:34:56') + self.assertEqual(base.nextFriday().toDateTimeString(), '2021-08-27 12:34:56') + self.assertEqual(base.nextSaturday().toDateTimeString(), '2021-08-28 12:34:56') + self.assertEqual(base.nextSunday().toDateTimeString(), '2021-08-29 12:34:56') + + self.assertTrue(base.nextMonday().equalTo(base.next(Carbon.MONDAY))) + self.assertTrue(base.nextTuesday().equalTo(base.next(Carbon.TUESDAY))) + self.assertTrue(base.nextWednesday().equalTo(base.next(Carbon.WEDNESDAY))) + self.assertTrue(base.nextThursday().equalTo(base.next(Carbon.THURSDAY))) + self.assertTrue(base.nextFriday().equalTo(base.next(Carbon.FRIDAY))) + self.assertTrue(base.nextSaturday().equalTo(base.next(Carbon.SATURDAY))) + self.assertTrue(base.nextSunday().equalTo(base.next(Carbon.SUNDAY))) + if __name__ == '__main__': unittest.main()