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()