diff --git a/CHANGELOG.rst b/CHANGELOG.rst
index 0b8bd7127d4559a8e386c96c2ae5347646c9fb7c..4f70bb719f117ac1654f2949afdb3e3d5382dc42 100644
--- a/CHANGELOG.rst
+++ b/CHANGELOG.rst
@@ -6,6 +6,14 @@ All notable changes to this project will be documented in this file.
 The format is based on `Keep a Changelog`_,
 and this project adheres to `Semantic Versioning`_.
 
+Unreleased
+----------
+
+Changed
+~~~~~~~
+
+* Support dates for ``TimePeriod.get_datetime_start`` and ``TimePeriod.get_datetime_end``.
+
 `2.0rc2`_ - 2021-08-01
 ----------
 
diff --git a/aleksis/apps/chronos/models.py b/aleksis/apps/chronos/models.py
index 07dc3fda0bd8429f7c335093bbe0b2ae3a07b723..9d51ac7a5678c2c71d58c951a28b1904d2164f64 100644
--- a/aleksis/apps/chronos/models.py
+++ b/aleksis/apps/chronos/models.py
@@ -161,14 +161,24 @@ class TimePeriod(ValidityRangeRelatedExtensibleModel):
 
         return wanted_week[self.weekday]
 
-    def get_datetime_start(self, week: Optional[Union[CalendarWeek, int]] = None) -> datetime:
+    def get_datetime_start(
+        self, date_ref: Optional[Union[CalendarWeek, int, date]] = None
+    ) -> datetime:
         """Get datetime of lesson start in a specific week."""
-        day = self.get_date(week)
+        if isinstance(date_ref, date):
+            day = date_ref
+        else:
+            day = self.get_date(date_ref)
         return datetime.combine(day, self.time_start)
 
-    def get_datetime_end(self, week: Optional[Union[CalendarWeek, int]] = None) -> datetime:
+    def get_datetime_end(
+        self, date_ref: Optional[Union[CalendarWeek, int, date]] = None
+    ) -> datetime:
         """Get datetime of lesson end in a specific week."""
-        day = self.get_date(week)
+        if isinstance(date_ref, date):
+            day = date_ref
+        else:
+            day = self.get_date(date_ref)
         return datetime.combine(day, self.time_end)
 
     @classmethod
diff --git a/aleksis/apps/chronos/templatetags/week_helpers.py b/aleksis/apps/chronos/templatetags/week_helpers.py
index 2f66d51e449c2a0d46f53700b32b79e4b53fc3fa..cdba9b3f014913a2525b3ca59bfc514dc0e98ef1 100644
--- a/aleksis/apps/chronos/templatetags/week_helpers.py
+++ b/aleksis/apps/chronos/templatetags/week_helpers.py
@@ -36,13 +36,13 @@ def period_to_date(week: CalendarWeek, period) -> date:
 
 
 @register.simple_tag
-def period_to_time_start(week: CalendarWeek, period) -> date:
-    return period.get_datetime_start(week)
+def period_to_time_start(date_ref: Union[CalendarWeek, int, date], period) -> date:
+    return period.get_datetime_start(date_ref)
 
 
 @register.simple_tag
-def period_to_time_end(week: Union[CalendarWeek, int], period) -> date:
-    return period.get_datetime_end(week)
+def period_to_time_end(date_ref: Union[CalendarWeek, int, date], period) -> date:
+    return period.get_datetime_end(date_ref)
 
 
 @register.simple_tag