Skip to content

Commit 1c32f85

Browse files
authored
feat: next weekday methods (#32)
1 parent 284a0ae commit 1c32f85

2 files changed

Lines changed: 40 additions & 0 deletions

File tree

python_carbon/__init__.py

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -634,6 +634,27 @@ def next(self, weekday: int = None) -> 'Carbon':
634634
weekday = weekday if weekday is not None else datetime.now().weekday()
635635
return Carbon(self._date + timedelta(days=weekday - self._date.weekday() + 7))
636636

637+
def nextMonday(self) -> 'Carbon':
638+
return self.next(self.MONDAY)
639+
640+
def nextTuesday(self) -> 'Carbon':
641+
return self.next(self.TUESDAY)
642+
643+
def nextWednesday(self) -> 'Carbon':
644+
return self.next(self.WEDNESDAY)
645+
646+
def nextThursday(self) -> 'Carbon':
647+
return self.next(self.THURSDAY)
648+
649+
def nextFriday(self) -> 'Carbon':
650+
return self.next(self.FRIDAY)
651+
652+
def nextSaturday(self) -> 'Carbon':
653+
return self.next(self.SATURDAY)
654+
655+
def nextSunday(self) -> 'Carbon':
656+
return self.next(self.SUNDAY)
657+
637658
##########################
638659
# datetime and timedelta #
639660
##########################

tests/test_python_carbon.py

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -186,6 +186,25 @@ def test_utc_converter(self) -> None:
186186
self.assertEqual(converted.toDatetime().tzname(), 'UTC')
187187
self.assertEqual(converted.toDateTimeString(), '2021-08-18 08:00:00')
188188

189+
def test_next_weekday_methods(self) -> None:
190+
base = Carbon.parse('2021-08-18 12:34:56')
191+
192+
self.assertEqual(base.nextMonday().toDateTimeString(), '2021-08-23 12:34:56')
193+
self.assertEqual(base.nextTuesday().toDateTimeString(), '2021-08-24 12:34:56')
194+
self.assertEqual(base.nextWednesday().toDateTimeString(), '2021-08-25 12:34:56')
195+
self.assertEqual(base.nextThursday().toDateTimeString(), '2021-08-26 12:34:56')
196+
self.assertEqual(base.nextFriday().toDateTimeString(), '2021-08-27 12:34:56')
197+
self.assertEqual(base.nextSaturday().toDateTimeString(), '2021-08-28 12:34:56')
198+
self.assertEqual(base.nextSunday().toDateTimeString(), '2021-08-29 12:34:56')
199+
200+
self.assertTrue(base.nextMonday().equalTo(base.next(Carbon.MONDAY)))
201+
self.assertTrue(base.nextTuesday().equalTo(base.next(Carbon.TUESDAY)))
202+
self.assertTrue(base.nextWednesday().equalTo(base.next(Carbon.WEDNESDAY)))
203+
self.assertTrue(base.nextThursday().equalTo(base.next(Carbon.THURSDAY)))
204+
self.assertTrue(base.nextFriday().equalTo(base.next(Carbon.FRIDAY)))
205+
self.assertTrue(base.nextSaturday().equalTo(base.next(Carbon.SATURDAY)))
206+
self.assertTrue(base.nextSunday().equalTo(base.next(Carbon.SUNDAY)))
207+
189208

190209
if __name__ == '__main__':
191210
unittest.main()

0 commit comments

Comments
 (0)