diff --git a/biscuit/apps/chronos/util.py b/biscuit/apps/chronos/util.py
index f3988f425a70e4b59f9196dad58966c9175e6dcd..7ce3b0da8bd7f617819a86839d68e3e7bb7c58b6 100644
--- a/biscuit/apps/chronos/util.py
+++ b/biscuit/apps/chronos/util.py
@@ -28,6 +28,21 @@ class CalendarWeek:
 
         return cls().week
 
+    @classmethod
+    def weeks_within(cls, start: date, end: date) -> Sequence[CalendarWeek]:
+        """ Get all calendar weeks within a date range. """
+
+        if start > end:
+            raise ValueError('End date must be after start date.')
+
+        current = start
+        weeks = []
+        while current < end:
+            weeks.append(cls.from_date(current))
+            current += timedelta(days=7)
+
+        return weeks
+
     def __post_init__(self) -> None:
         today = date.today()