diff --git a/program/models.py b/program/models.py
index 01c99d52d0a0528528baba9323a175ecea852c7d..25c5e4c53ff06d4f583e7715642843fab849058e 100644
--- a/program/models.py
+++ b/program/models.py
@@ -1062,24 +1062,8 @@ class TimeSlotManager(models.Manager):
         )
 
     @staticmethod
-    def get_24h_timeslots(start):
-        end = timezone.make_aware(start + timedelta(hours=24))
-
-        return TimeSlot.objects.filter(
-            Q(start__lte=start, end__gte=start) | Q(start__gt=start, start__lt=end)
-        ).exclude(end=start)
-
-    @staticmethod
-    def get_7d_timeslots(start):
-        start = datetime.combine(start, time(0, 0))
-        end = timezone.make_aware(start + timedelta(days=7))
-
-        return TimeSlot.objects.filter(
-            Q(start__lte=start, end__gte=start) | Q(start__gt=start, start__lt=end)
-        ).exclude(end=start)
-
-    @staticmethod
-    def get_timerange_timeslots(start, end):
+    def get_timerange_timeslots(start: datetime, end: datetime):
+        """get the timeslots in the timerange between start and end"""
         return TimeSlot.objects.filter(
             Q(start__lte=start, end__gte=start) | Q(start__gt=start, start__lt=end)
         ).exclude(end=start)
diff --git a/program/views.py b/program/views.py
index d442fb4075514ffd7c5c5e026ba3afac00334fe3..90630e82a95184bed828eff3a55a4f00ea43e0ea 100644
--- a/program/views.py
+++ b/program/views.py
@@ -20,7 +20,7 @@
 
 import json
 import logging
-from datetime import date, datetime, time
+from datetime import date, datetime, time, timedelta
 from textwrap import dedent
 
 from drf_spectacular.utils import OpenApiResponse, extend_schema, extend_schema_view
@@ -78,15 +78,21 @@ logger = logging.getLogger(__name__)
 
 
 def json_day_schedule(request, year=None, month=None, day=None):
+    # datetime.combine returns a timezone naive datetime object
     if year is None and month is None and day is None:
-        today = timezone.make_aware(datetime.combine(timezone.now(), time(0, 0)))
+        start = timezone.make_aware(datetime.combine(timezone.now(), time(0, 0)))
     else:
-        today = timezone.make_aware(datetime.combine(date(year, month, day), time(0, 0)))
+        start = timezone.make_aware(datetime.combine(date(year, month, day), time(0, 0)))
+
+    end = start + timedelta(hours=24)
 
     timeslots = (
-        TimeSlot.objects.get_24h_timeslots(today).select_related("schedule").select_related("show")
+        TimeSlot.objects.get_timerange_timeslots(start, end)
+        .select_related("schedule")
+        .select_related("show")
     )
     schedule = []
+
     for ts in timeslots:
         entry = {
             "start": ts.start.strftime("%Y-%m-%d_%H:%M:%S"),
@@ -115,6 +121,7 @@ def json_playout(request):
          If end not given, it returns all timeslots of the next 7 days
     """
 
+    # datetime.combine returns a timezone naive datetime object
     if request.GET.get("start") is None:
         start = timezone.make_aware(datetime.combine(timezone.now(), time(0, 0)))
     else:
@@ -123,24 +130,20 @@ def json_playout(request):
         )
 
     if request.GET.get("end") is None:
-        # If no end was given, return the next week
-        timeslots = (
-            TimeSlot.objects.get_7d_timeslots(start)
-            .select_related("schedule")
-            .select_related("show")
-        )
+        end = start + timedelta(days=7)
     else:
-        # Otherwise return the given timerange
         end = timezone.make_aware(
             datetime.combine(parse_date(request.GET.get("end")), time(23, 59))
         )
-        timeslots = (
-            TimeSlot.objects.get_timerange_timeslots(start, end)
-            .select_related("schedule")
-            .select_related("show")
-        )
+
+    timeslots = (
+        TimeSlot.objects.get_timerange_timeslots(start, end)
+        .select_related("schedule")
+        .select_related("show")
+    )
 
     schedule = []
+
     for ts in timeslots:
         is_repetition = " " + _("REP") if ts.schedule.is_repetition is True else ""