diff --git a/program/views.py b/program/views.py
index 00b4ca03d0baf95d22f39f3e1a377d9c85337c40..66804e342b6a5d6743087b77d2efb1658a476acc 100644
--- a/program/views.py
+++ b/program/views.py
@@ -89,8 +89,9 @@ def timeslot_entry(*, timeslot: TimeSlot) -> dict:
 
     return {
         "id": timeslot.id,
-        "start": timeslot.start.strftime("%Y-%m-%dT%H:%M:%S"),
-        "end": timeslot.end.strftime("%Y-%m-%dT%H:%M:%S"),
+        # we need start & end as timezone naive datetime objects
+        "start": timezone.make_naive(timeslot.start).strftime("%Y-%m-%dT%H:%M:%S"),
+        "end": timezone.make_naive(timeslot.end).strftime("%Y-%m-%dT%H:%M:%S"),
         "title": title,
         "schedule_id": schedule.id,
         "is_repetition": timeslot.is_repetition,
@@ -175,9 +176,9 @@ def json_playout(request):
     - internal calendar to retrieve all timeslots for a week
     """
 
-    # datetime.combine returns a timezone naive datetime object
+    # datetime.now and datetime.combine return timezone naive datetime objects
     if request.GET.get("start") is None:
-        schedule_start = timezone.make_aware(datetime.combine(timezone.now(), time(0, 0)))
+        schedule_start = timezone.make_aware(datetime.combine(datetime.now(), time(0, 0)))
     else:
         schedule_start = timezone.make_aware(
             datetime.combine(parse_date(request.GET.get("start")), time(0, 0))
@@ -187,8 +188,7 @@ def json_playout(request):
         schedule_end = schedule_start + timedelta(days=7)
     else:
         schedule_end = timezone.make_aware(
-            datetime.combine(parse_date(request.GET.get("end")) + timedelta(days=1), time(0, 0)),
-            timezone=timezone.get_current_timezone(),
+            datetime.combine(parse_date(request.GET.get("end")) + timedelta(days=1), time(0, 0))
         )
 
     include_virtual = request.GET.get("includeVirtual") == "true"